home *** CD-ROM | disk | FTP | other *** search
/ PD ROM 1 / PD ROM Volume I - Macintosh Software from BMUG (1988).iso / Programming / Complete Applications / Telecom / MT Special 3 / BASIC BBS / CONFIGURE BASIC
Encoding:
Text File  |  1988-01-01  |  167.0 KB  |  4,302 lines  |  [TEXT/ttxt]

  1. 10000 ' $linesize: 132
  2. 10001 ' $title:  'CONFIG V2.10, Copyright 1983,84,85,86 by D. Thomas Mack'
  3. 10003 ' WARNING !!! DO NOT CHANGE, BYPASS OR REMOVE LINE 10000-10230
  4. 10010 ' CONFIG.BAS (RBBS-PC ver. CPC14.1D)
  5. 10030 ' by D.Thomas Mack
  6. 10040 '   The Second Ring
  7. 10050 '   10210 Oxfordshire Road
  8. 10060 '   Great Falls, Virginia 22066
  9. 10070 '
  10. 10080 ' *******************************NOTICE***********************************
  11. 10090 ' *  A limited license is granted to all users of this program and it's  *
  12. 10100 ' *  companion program, RBBS-PC (ver. CPC14.1), to make copies of this   *
  13. 10110 ' *  program and distribute the copies to other users, on the following  *
  14. 10120 ' *  conditions                                                          *
  15. 10130 ' *    1.   The notices contained in lines 25 through 44 of the programs *
  16. 10140 ' *         are not altered, bypassed, or removed.                       *
  17. 10150 ' *    2.   The program is not to be disrtibuted to others in modified   *
  18. 10160 ' *         form (i.e. the line numbers must remain the same).           *
  19. 10170 ' *    3.   No fee is to be charged (or any other consideration received)*
  20. 10180 ' *         for coping or distributing these programs without an express *
  21. 10190 ' *         written agreement with D. Thomas Mack, The Second Ring, 10210*
  22. 10200 ' *         Oxfordshire Road, Great falls, Virginia 22006                *
  23. 10210 ' *                                                                      *
  24. 10220 ' *   Copyright (c) 1983, 1984, 1985, 1986 Thomas Mack, The Second Ring  *
  25. 10230 ' ************************************************************************
  26. 10240 DEFINT A-Z
  27.       CLEAR
  28.       DIM A$(10), _
  29.           SYSOP.FUNCTION(7), _
  30.           MAIN.FUNCTION(21), _
  31.           FILES.FUNCTION(10), _
  32.           UTILITY.FUNCTION(16), _
  33.           HELP$(9), _
  34.           DNLD$(99), _
  35.           MENU$(6)
  36. '
  37. ' *****************************************************************************
  38. ' *  DISPLAY THE CONFIG TITLE PAGE                                            *
  39. ' *****************************************************************************
  40. '
  41. 10250 WIDTH 80
  42.       CLS
  43.       I! = FRE(C$)
  44.       KEY OFF
  45.       LOCATE ,,0
  46. 10260 PRINT TAB(60)"tm"
  47.       PRINT TAB(16) STRING$(15,205)" U S E R W A R E "STRING$(15,205)
  48. 10270 PRINT
  49.       PRINT TAB(17)"Capital PC User Group User-Supported Software"
  50.       PRINT
  51.       PRINT TAB(5) CHR$(214)STRING$(67,196)CHR$(183)
  52. 10280 FOR I = 1 TO 12
  53.         READ A$
  54.         PRINT TAB(5) CHR$(186);A$;SPACE$(67-LEN(A$));CHR$(186)
  55.       NEXT
  56. 10290 PRINT TAB(5) CHR$(211)STRING$(67,196)CHR$(189)
  57.       PRINT "Copyright (c)1983,1984,1985,1986 Tom Mack, 10210 Oxfordshire Rd, Great Falls, VA"
  58. 10300 DATA "    If you are using RBBS-PC CPC14.1 and find it valuable, I
  59. 10310 DATA "    suggest you consider a contribution to
  60. 10320 DATA "
  61. 10330 DATA "                 Capital PC Software Exchange
  62. 10340 DATA "                     Post Office Box 6128
  63. 10350 DATA "                Silver Spring, Maryland  20906
  64. 10360 DATA ""
  65. 10370 DATA "    You are free to copy and share RBBS-PC CPC14.1 with
  66. 10380 DATA "    others on these three conditions:
  67. 10390 DATA "      1.  This program is not distributed in modified form.
  68. 10400 DATA "      2.  No fee or consideration is charged.
  69. 10410 DATA "      3.  This notice is not bypassed or removed.
  70. '
  71. ' *****************************************************************************
  72. ' *  DEFINE THE FUNCTIONS USED BY CONFIG                                      *
  73. ' *****************************************************************************
  74. '
  75. 10420 DEF FNTI! = CSNG(FIX((VAL(MID$(TIME$,1,2))*60*60) _
  76.                          + (VAL(MID$(TIME$,4,2))*60) _
  77.                          + (VAL(MID$(TIME$,7,2))*1)))               
  78. 10422 DEF FNHSH(X$) = ((ASC(X$)*100  _
  79.                          +  ASC(MID$(X$,LEN(X$)/2,1))*10  _
  80.                          +  ASC(RIGHT$(X$,1))) MOD MAX.USR.FILE.SIZE.FRM.DEF)  +  1
  81. 10424 DEF FNHSH2(X$) = (ASC(MID$(X$,2,1))*10  +  7) MOD MAX.USR.FILE.SIZE.FRM.DEF
  82. 10430 CONFIG.FILENAME$ = "RBBS-PC.DEF"
  83.       M$     = "Z"
  84.       MAXD   = 10
  85. 10440 FG     = 7
  86. 10450 BG     = 0
  87. 10460 BORDER = 0
  88. 10470 DELAY!    = FNTI! + 5
  89. 10480 IF FNTI! < DELAY! THEN _
  90.          LOCATE 22,15 : _
  91.          GOTO 10480
  92. 10490 LOCATE 22,15
  93.       PRINT SPC(64)
  94.       LOCATE 22,15
  95.       PRINT "Will you be running multiple copies of RBBS-PC (YES or NO)?";
  96. 10500 GOSUB 22380
  97.       ON AB GOTO 10530,10510,10490,10490
  98. 10510 GOSUB 22480
  99. 10520 '
  100. '
  101. ' *****************************************************************************
  102. ' * CHECK TO SEE IF AN EXISTING "RBBS-PC.DEF" FILE EXISTS                     *
  103. ' *****************************************************************************
  104. '
  105. 10530 ON ERROR GOTO 60010
  106.       DD$ = "C"
  107.       GOSUB 10540
  108.       MODEM.INIT.COMMAND$ = SG1$
  109.       FILE$ = CONFIG.FILENAME$
  110.       GOSUB 30000
  111.       IF OKAY THEN _
  112.          GOTO 10535
  113. 10531 GOSUB 31060
  114.       PRINT CONFIG.FILENAME$ + " file not found.  A new one will be created.";
  115.       DELAY! = FNTI! + 5
  116.       GOSUB 60440
  117. 10532 GOSUB 31060
  118.       PRINT "Default drive on which RBBS is to reside (A-" + M$ + "): ";
  119.       LINE INPUT;HJ$
  120.       GOSUB 50654
  121.       IF LEN(HJ$)<>1 OR HJ$<"A" OR HJ$>M$ THEN _
  122.          GOTO 10532
  123. 10533 DD$ = HJ$
  124.       GOSUB 10540
  125.       GOTO 11870
  126. 10535 OPEN "I",#1,CONFIG.FILENAME$
  127.       GOTO 11590
  128. '
  129. ' *****************************************************************************
  130. ' * INITALIZE ALL VARIABLES                                                   *
  131. ' *****************************************************************************
  132. '
  133. 10540 D$                        = DD$ + ":"
  134.       FALSE                     = 0
  135.       IB                        = 0
  136.       TRUE                      = NOT FALSE
  137.       MAXIMUM.DISPLAYABLE.PAGES = 9
  138.       MAXIUM.NUMBER.OF.NODES    = 1
  139.       NETWORK.TYPE$             = "IBM's DOS"
  140.       RECYCLE.TO.DOS$           = "INTERNAL"
  141.       MAX.USR.FILE.SIZE.FRM.DEF = 16
  142.       MAIN.MESSAGE.FILE$        = D$ + "MESSAGES"
  143.       MAIN.MESSAGE.BACKUP$      = D$ + "MESSAGES.BAK"
  144.       CALLERS.FILE$             = D$ + "CALLERS"
  145.       COMMENTS.FILE$            = D$ + "COMMENTS"
  146.       MAIN.USER.FILE$           = D$ + "USERS"
  147.       C$                        = ""
  148.       HELP.FILE.PREFIX$         = "HELP0"
  149.       HELP$(1)                  = "HELP01"
  150.       HELP$(2)                  = "HELP02"
  151.       HELP$(3)                  = "HELP03"
  152. 10720 HELP$(4)                  = "HELP04"
  153.       HELP$(5)                  = "HELP05"
  154.       HELP$(6)                  = "HELP06"
  155.       HELP$(7)                  = "HELP07"
  156.       HELP$(8)                  = "HELP08"
  157.       HELP$(9)                  = "HELP09"
  158.       BULLETIN.MENU$            = "BULLET"
  159.       BULLETIN.PREFIX$          = "BULLET"
  160.       WELCOME.FILE$             = D$ + "WELCOME"
  161.       NEWUSER.FILE$             = D$ + "NEWUSER"
  162.       MENU$(1)                  = D$ + "MENU1"
  163.       MENU$(2)                  = D$ + "MENU2"
  164.       MENU$(3)                  = D$ + "MENU3"
  165.       MENU$(4)                  = D$ + "MENU4"
  166.       MENU$(5)                  = D$ + "MENU5"
  167. 10880 CONFERENCE.MENU$          = D$ + "CONFENCE"
  168.       TRASHCAN.FILE$            = D$ + "TRASHCAN"
  169.       CONFERENCE.VIEWER.SEC.LVL = 0
  170.       WELCOME.INTERRUPTABLE     = TRUE
  171.       REMIND.FILE.TRANSFERS     = FALSE
  172.       REMIND.PROFILE            = FALSE
  173.       PAGE.LENGTH               = 23
  174.       MAX.MESSAGE.LINES         = 19
  175.       DOORS.AVAILABLE           = FALSE
  176.       DIRECTORY.EXTENTION$      = "DIR"
  177.       TB$                       = DD$
  178.       DRIVE.FOR.BULLETINS$      = TB$
  179.       DRIVE.FOR.HELP.FILES$     = TB$
  180.       DOS.VERSION               = 2
  181.       SYSOP.FIRST.NAME$         = "TOM"
  182.       SYSOP.LAST.NAME$          = "MACK"
  183.       SYSOP.PASSWORD.1$         = "RBBS-PC"
  184.       RBBS.NAME$                = "RBBS-PC"
  185.       SYSOP.PASSWORD.2$         = "CPC12"
  186.       EXPERT.USER               = 0
  187.       CONFIG.VERSION$           = "(Version 2.20)"                   ' CPC14-1D
  188.       REQUIRED.RINGS            = 1
  189.       MINIMUM.LOGON.SECURITY    = 0
  190.       CONFERENCE.VIEWER.SEC.LVL = MINIMUM.LOGON.SECURITY
  191.       DEFAULT.SECURITY.LEVEL    = 5
  192.       SYSOP.SECURITY.LEVEL      = 10
  193. 11110 RECYCLE.TO.DOS            = 0
  194.       LOCAL.PASSWORD$           = SYSOP.PASSWORD.1$
  195.       MAXIMUM.VIOLATIONS        = 5
  196.       SF                        = 10
  197.       FOR I = 1 TO 7
  198.         SYSOP.FUNCTION(I)       = SF
  199.       NEXT
  200.       MM                        = 5
  201.       FOR I = 1 TO 21
  202.         MAIN.FUNCTION(I)        = MM
  203.       NEXT
  204.       FC                        = 5
  205.       FOR I = 1 TO 10
  206.         FILES.FUNCTION(I)       = FC
  207.       NEXT
  208.       UE                        = 5
  209.       FOR I = 1 TO 16
  210.         UTILITY.FUNCTION(I)     = UE
  211.       NEXT
  212.       PASSWORD.FILE$             = TB$ + ":" + "PASSWRDS"
  213.       MAXIMUM.PASSWORD.CHANGES   = 3
  214.       MINIMUM.SECURITY.FOR.TEMP.PASSWORD = 5
  215.       OVERWRITE.SECURITY.LEVEL   = SYSOP.SECURITY.LEVEL
  216.       DOORS.TERMINAL.TYPE        = 5
  217.       DOWNLOAD.DRIVES$           = DD$ + DD$
  218.       MO$                        = DD$
  219.       UPLOAD.DIRECTORY$          = "99"
  220.       RBBS.BAT$                  = D$ + "RBBS.BAT"
  221.       SEC.LVL.EXEMPT.FRM.PURGING = SYSOP.SECURITY.LEVEL
  222. 11204 FILESEC.FILE$              = TB$ + ":" + "FILESEC"
  223.       SYSOP.MENU.SECURITY.LEVEL  = 10
  224.       DOORS.SECURITY.LEVEL       = 10
  225.       NETWORK.TYPE               = 0
  226.       DEFAULT.MACHINE.TYPE$      = "IBMPC"
  227.       WAIT.BEFORE.DISCONNECT     = 180
  228.       UPLOAD.TIME.FACTOR!        = 0
  229.       MODEM.INIT.BAUD$           = "300"
  230.       MODEM.INIT.WAIT.TIME       = 2                                 ' CPC14-1C
  231.       MODEM.COMMAND.DELAY.TIME   = 1                                 ' CPC14-1C
  232.       TURBO.RBBS                 = TRUE                              ' CPC14-1C
  233. 11270 RCTTY.BAT$                 = D$ + "RCTTY.BAT"
  234.       OMIT.MAIN.DIRECTORY$       = "NO"
  235.       OMIT.UPLOAD.DIRECTORY$     = "NO"
  236.       PROMPT.BELL                = 0
  237.       PCJR                       = 0
  238.       MINUTES.PER.SESSION!       = 72
  239.       MAX.ALLOWED.MSGS.FRM.DEF   = 5
  240.       ACT.MNTHS.B4.DELETING      = 1
  241.       START.OFFICE.HOURS         = 800
  242.       END.OFFICE.HOURS           = 2200
  243.       CODE.TYPE                  = FALSE
  244.       BULLETINS.OPTIONAL         = TRUE
  245.       COM.PORT$                  = "COM1"
  246.       MESSAGE.REMINDER           = TRUE
  247.       REQUIRE.NON.ASCII          = TRUE
  248.       PAGING.PRINTER.SUPPORT$    = ". "
  249.       LIMIT.DAILY.TIME           = FALSE
  250.       COMMANDS.BETWEEN.RINGS     = FALSE
  251.       MNP.SUPPORT                = FALSE
  252.       ACTIVE.BULLETINS           = 6
  253.       COMPUTER.TYPE              = 0
  254. 11271 SYSOP.FUNCTION.KEY1$=  "         --- RBBS-PC'S Local Keyboard's Active Keys and Their Use --- "
  255. 11272 SYSOP.FUNCTION.KEY2$=  "ESC- SYSOP sign-on locally to RBBS.    END - Lock-out & logoff current user."
  256. 11273 SYSOP.FUNCTION.KEY3$=  "F1 - End RBBS-PC and exit to DOS.      PgUp- Display current user's information."
  257. 11274 SYSOP.FUNCTION.KEY4$=  "F2 - Temporarily exit to DOS.          PgDn- End display of user's information."
  258. 11275 SYSOP.FUNCTION.KEY5$=  "F3 - Toggle Line Printer.               "+CHR$(24)+"  - Add 1 to a user's security"
  259. 11276 SYSOP.FUNCTION.KEY6$=  "F4 - Toggle SYSOP Page Bell.            "+CHR$(25)+"  - Subtract 1 from user's security"
  260. 11277 SYSOP.FUNCTION.KEY7$=  "F5 - Force on-line state."
  261. 11278 SYSOP.FUNCTION.KEY8$=  "F6 - Toggle SYSOP available."
  262. 11279 SYSOP.FUNCTION.KEY9$=  "F7 - SYSOP next on system."
  263. 11280 SYSOP.FUNCTION.KEY10$= "F8 - Grant temporary SYSOP privileges."
  264. 11281 SYSOP.FUNCTION.KEY11$= "F9 - Toggle SNOOP."
  265. 11282 SYSOP.FUNCTION.KEY12$= "F10- Force CHAT - ESC to end."
  266.       SG1$="ATM0Q1S2=255S10=30E0S0=0    "
  267. 11551 DNLD.SUB                   = 0
  268.       WILL.SUBDIRS.B.USED        = FALSE
  269.       UPLOAD.TO.SUBDIR           = FALSE
  270.       DOWNLOAD.TO.SUBDIR         = FALSE
  271.       RESTRICT.BAUD              = FALSE
  272.       USE.COLOR                  = FALSE
  273.       DISKFULL.GO.OFFLINE        = TRUE
  274.       EXTENDED.LOGGING           = FALSE
  275.       DUMB.MODEM                 = FALSE
  276.       COMMENTS.AS.MESSAGES       = FALSE
  277.       UPLOAD.SUBDIR$             = ""
  278.       MODEM.RESET.COMMAND$       = "ATZ"
  279.       MODEM.COUNT.RINGS.COMMAND$ = "ATS1?"
  280.       MODEM.ANSWER.COMMAND$      = "ATQ0X1V1A"
  281.       MODEM.GO.OFFHOOK.COMMAND$  = "ATQ1E1H1M0"
  282.       DISK.FOR.DOS$              = DD$ + ":"
  283.       RETURN
  284. 11580 ' RBBS-PC Configuration Program for Compilable RBBS-PC
  285. 11590 LOCATE 22,15
  286.       PRINT SPC(64);
  287. '
  288. ' *****************************************************************************
  289. ' * READ IN THE PARAMETERS FROM AN EXISTING "RBBS-PC.DEF" FILE                *
  290. ' *****************************************************************************
  291. '
  292. 11600 INPUT #1,DOWNLOAD.DRIVES$, _                        ' FD$ 
  293.                SYSOP.PASSWORD.1$, _                       ' PA$
  294.                SYSOP.PASSWORD.2$, _                       ' PB$
  295.                SYSOP.FIRST.NAME$, _                       ' NB$
  296.                SYSOP.LAST.NAME$, _                        ' NC$
  297.                REQUIRED.RINGS, _                          ' CE
  298.                START.OFFICE.HOURS, _                      ' AC
  299.                END.OFFICE.HOURS, _                        ' AD
  300.                MINUTES.PER.SESSION!, _                    ' TC!
  301.                MAX.ALLOWED.MSGS.FRM.DEF, _                ' MP      (DF)
  302.                ACT.MNTHS.B4.DELETING, _                   ' LA      (DF)
  303.                UPLOAD.DIRECTORY$, _                       ' UF$
  304.                EXPERT.USER, _                             ' XPR
  305.                ACTIVE.BULLETINS, _                        ' BG
  306.                PROMPT.BELL, _                             ' BE
  307.                PCJR, _                                    ' PCJR    (DF)
  308.                CODE.TYPE, _                               ' CL      (DF)
  309.                MENU$(1), _                                ' MG$
  310.                MENU$(2), _                                ' MH$
  311.                MENU$(3), _                                ' MI$ 
  312.                MENU$(4), _                                ' MJ$
  313.                MENU$(5), _                                ' MK$
  314.                CONFERENCE.MENU$, _                        ' CD$
  315.                CONFERENCE.VIEWER.SEC.LVL, _               ' VA      (DF)
  316.                WELCOME.INTERRUPTABLE, _                   ' OA
  317.                REMIND.FILE.TRANSFERS, _                   ' UD
  318.                PAGE.LENGTH, _                             ' PL
  319.                MAX.MESSAGE.LINES, _                       ' LW
  320.                DOORS.AVAILABLE, _                         ' WB
  321.                MO$                                        ' MO$     (DF) 
  322. 11610 GOSUB 22340
  323. 11620 INPUT #1,MAIN.MESSAGE.FILE$, _                      ' ME$
  324.                MAIN.MESSAGE.BACKUP$, _                    ' MF$
  325.                CALLERS.FILE$, _                           ' CB$
  326.                COMMENTS.FILE$, _                          ' CC$ 
  327.                MAIN.USER.FILE$, _                         ' UC$
  328.                WELCOME.FILE$, _                           ' WA$
  329.                NEWUSER.FILE$, _                           ' NA$
  330.                DIRECTORY.EXTENTION$, _                    ' DIR$
  331.                COM.PORT$, _                               ' M13$
  332.                BULLETINS.OPTIONAL, _                      ' OD
  333.                MODEM.INIT.COMMAND$, _                     ' SG$
  334.                TB$, _                                     ' TB$     (DF)
  335.                DOS.VERSION, _                             ' DA
  336.                FG, _                                      ' FGR
  337.                BG, _                                      ' BGR
  338.                BORDER, _                                  ' BDR  
  339.                RBBS.BAT$, _                               ' RB$
  340.                RCTTY.BAT$                                 ' CI$
  341.       IF LEN(MODEM.INIT.COMMAND$) <> 28 THEN _
  342.          MODEM.INIT.COMMAND$ = SG1$
  343. 11630 GOSUB 22340
  344. 11640 INPUT #1,OMIT.MAIN.DIRECTORY$, _                    ' OB$
  345.                OMIT.UPLOAD.DIRECTORY$, _                  ' OC$
  346.                HELP$(1), _                                ' HA$(1)
  347.                HELP$(2), _
  348.                HELP$(3), _
  349.                HELP$(4), _
  350.                HELP$(5), _
  351.                HELP$(6), _
  352.                HELP$(7), _
  353.                HELP$(8), _
  354.                HELP$(9), _                                ' HA$(9) 
  355.                BULLETIN.MENU$, _                          ' BA$
  356.                BULLETIN.PREFIX$, _                        ' BB$
  357.                DRIVE.FOR.BULLETINS$, _                    ' BD$     (DF) 
  358.                MESSAGE.REMINDER, _                        ' RC
  359.                REQUIRE.NON.ASCII, _                       ' BF
  360.                DOORS.SECURITY.LEVEL, _                    ' SD
  361.                MAXIUM.NUMBER.OF.NODES, _                  ' MC
  362.                NETWORK.TYPE, _                            ' SE
  363.                RECYCLE.TO.DOS, _                          ' CF
  364.                MAX.USR.FILE.SIZE.FRM.DEF, _               ' UB      (DF)
  365.                MAX.MSG.FILE.SIZE.FRM.DEF!, _               ' MQ!     (DF)
  366.                TRASHCAN.FILE$                             ' BC$
  367.       GOSUB 21895
  368. 11650 GOSUB 22340
  369. 11660 INPUT #1,MINIMUM.LOGON.SECURITY, _                  ' ML
  370.                DEFAULT.SECURITY.LEVEL, _                  ' DB
  371.                SYSOP.SECURITY.LEVEL, _                    ' SB
  372.                FILESEC.FILE$, _                           ' FB$
  373.                SYSOP.MENU.SECURITY.LEVEL, _               ' SC
  374.                LOCAL.PASSWORD$, _                         ' KA$
  375.                MAXIMUM.VIOLATIONS, _                      ' ND
  376.                SYSOP.FUNCTION(1), _                       ' SA(1)
  377.                SYSOP.FUNCTION(2), _
  378.                SYSOP.FUNCTION(3), _
  379.                SYSOP.FUNCTION(4), _
  380.                SYSOP.FUNCTION(5), _
  381.                SYSOP.FUNCTION(6), _
  382.                SYSOP.FUNCTION(7), _                       ' SA(7)
  383.                PASSWORD.FILE$, _                          ' PD$
  384.                MAXIMUM.PASSWORD.CHANGES, _                ' CG
  385.                MINIMUM.SECURITY.FOR.TEMP.PASSWORD, _      ' CH
  386.                OVERWRITE.SECURITY.LEVEL, _                ' WC
  387.                DOORS.TERMINAL.TYPE, _                     ' MN
  388.                LIMIT.DAILY.TIME                           ' M26
  389. 11670 GOSUB 22340
  390. 11680 INPUT #1,MAIN.FUNCTION(1), _                        ' MD(1)
  391.                MAIN.FUNCTION(2), _
  392.                MAIN.FUNCTION(3), _
  393.                MAIN.FUNCTION(4), _
  394.                MAIN.FUNCTION(5), _
  395.                MAIN.FUNCTION(6), _
  396.                MAIN.FUNCTION(7), _
  397.                MAIN.FUNCTION(8), _
  398.                MAIN.FUNCTION(9), _
  399.                MAIN.FUNCTION(10), _
  400.                MAIN.FUNCTION(11), _
  401.                MAIN.FUNCTION(12), _
  402.                MAIN.FUNCTION(13), _
  403.                MAIN.FUNCTION(14), _
  404.                MAIN.FUNCTION(15), _
  405.                MAIN.FUNCTION(16), _
  406.                MAIN.FUNCTION(17), _
  407.                MAIN.FUNCTION(18), _
  408.                MAIN.FUNCTION(19), _
  409.                MAIN.FUNCTION(20), _
  410.                MAIN.FUNCTION(21), _                       ' MD(21)
  411.                DEFAULT.MACHINE.TYPE$, _                   ' SY$
  412.                WAIT.BEFORE.DISCONNECT                     ' TY
  413. 11690 GOSUB 22340
  414. 11700 INPUT #1,FILES.FUNCTION(1), _                       ' FS(1)
  415.                FILES.FUNCTION(2), _
  416.                FILES.FUNCTION(3), _
  417.                FILES.FUNCTION(4), _
  418.                FILES.FUNCTION(5), _
  419.                FILES.FUNCTION(6), _
  420.                FILES.FUNCTION(7), _
  421.                FILES.FUNCTION(8), _
  422.                FILES.FUNCTION(9), _
  423.                FILES.FUNCTION(10), _                      ' FS(10)
  424.                UTILITY.FUNCTION(1), _                     ' UA(1)
  425.                UTILITY.FUNCTION(2), _
  426.                UTILITY.FUNCTION(3), _
  427.                UTILITY.FUNCTION(4), _
  428.                UTILITY.FUNCTION(5), _
  429.                UTILITY.FUNCTION(6), _
  430.                UTILITY.FUNCTION(7), _
  431.                UTILITY.FUNCTION(8), _
  432.                UTILITY.FUNCTION(9), _
  433.                UTILITY.FUNCTION(10), _
  434.                UTILITY.FUNCTION(11), _
  435.                UTILITY.FUNCTION(12), _
  436.                UTILITY.FUNCTION(13), _
  437.                UTILITY.FUNCTION(14), _
  438.                UTILITY.FUNCTION(15), _
  439.                UTILITY.FUNCTION(16), _                    ' UA(16)
  440.                UPLOAD.TIME.FACTOR!, _                     ' UPX!
  441.                COMPUTER.TYPE, _                           ' CM
  442.                REMIND.PROFILE, _                          ' CK
  443.                RBBS.NAME$, _                              ' FF$
  444.                COMMANDS.BETWEEN.RINGS, _                  ' M28
  445.                MNP.SUPPORT, _                             ' M29
  446.                PAGING.PRINTER.SUPPORT$, _                 ' MW$
  447.                MODEM.INIT.BAUD$                           ' B$
  448. 11705 INPUT #1,SYSOP.FUNCTION.KEY1$, _                    ' SM1$
  449.                SYSOP.FUNCTION.KEY2$, _
  450.                SYSOP.FUNCTION.KEY3$, _
  451.                SYSOP.FUNCTION.KEY4$, _
  452.                SYSOP.FUNCTION.KEY5$, _
  453.                SYSOP.FUNCTION.KEY6$, _
  454.                SYSOP.FUNCTION.KEY7$, _
  455.                SYSOP.FUNCTION.KEY8$, _
  456.                SYSOP.FUNCTION.KEY9$, _ 
  457.                SYSOP.FUNCTION.KEY10$, _                   ' SM9$
  458.                SYSOP.FUNCTION.KEY11$, _                   ' SH$
  459.                SYSOP.FUNCTION.KEY12$, _                   ' SI$
  460.                SEC.LVL.EXEMPT.FRM.PURGING, _              ' PC       ' CPC14-1C
  461.                MODEM.INIT.WAIT.TIME, _                               ' CPC14-1C
  462.                MODEM.COMMAND.DELAY.TIME, _                           ' CPC14-1C
  463.                TURBO.RBBS                                            ' CPC14-1C
  464. 11706 INPUT #1,DNLD.SUB, _                                ' DNLD.SUB
  465.                WILL.SUBDIRS.B.USED, _                     ' M30      (DF)
  466.                UPLOAD.TO.SUBDIR, _                        ' M31
  467.                DOWNLOAD.TO.SUBDIR, _                      ' M32      (DF)
  468.                UPLOAD.SUBDIR$, _                          ' M33$
  469.                RESTRICT.BAUD, _                           ' M34
  470.                USE.COLOR, _                               ' M35
  471.                DISKFULL.GO.OFFLINE, _                     ' M36
  472.                EXTENDED.LOGGING, _                        ' M37
  473.                MODEM.RESET.COMMAND$, _                    ' M1$
  474.                MODEM.COUNT.RINGS.COMMAND$, _              ' M2$
  475.                MODEM.ANSWER.COMMAND$, _                   ' M3$
  476.                MODEM.GO.OFFHOOK.COMMAND$, _               ' M4$
  477.                DISK.FOR.DOS$, _                           ' M38$
  478.                DUMB.MODEM, _                              ' M39
  479.                COMMENTS.AS.MESSAGES, _                    ' M40
  480.                LSB, _                                     ' LSB
  481.                MSB, _                                     ' MSB
  482.                LINE.CONTROL.REGISTER, _                   ' LCR
  483.                MODEM.CONTROL.REGISTER, _                  ' MCR
  484.                LINE.STATUS.REGISTER, _                    ' LSR
  485.                MODEM.STATUS.REGISTER                      ' MSR
  486. 11707 IF DNLD.SUB < 1 OR DNLD.SUB > 99 THEN _
  487.          GOTO 11710
  488.       FOR I = 1 TO DNLD.SUB 
  489.           INPUT #1,DNLD$(I)
  490.       NEXT
  491. 11710 GOSUB 22340
  492. '
  493. ' *****************************************************************************
  494. ' * CONVERT "RBBS-PC.DEF" PARAMETERS TO DISPLAYABLE VALUES, AS REQUIRED       *
  495. ' *****************************************************************************
  496. '
  497. 11720 BULLETIN.MENU$           = RIGHT$(BULLETIN.MENU$,(LEN(BULLETIN.MENU$)-2))
  498. 11730 BULLETIN.PREFIX$         = RIGHT$(BULLETIN.PREFIX$,(LEN(BULLETIN.PREFIX$)-2))
  499. 11740 IF RECYCLE.TO.DOS = 0 THEN _
  500.          RECYCLE.TO.DOS$ = "INTERNAL" ELSE _
  501.          RECYCLE.TO.DOS$ = "SYSTEM
  502. 11750 DRIVE.FOR.HELP.FILES$ = LEFT$(HELP$(1),1)
  503. 11760 HELP$(1) = RIGHT$(HELP$(1),(LEN(HELP$(1))-2))
  504. 11770 HELP.FILE.PREFIX$ = LEFT$(HELP$(1),LEN(HELP$(1))-1)
  505. 11780 SF = SYSOP.FUNCTION(1)
  506.       FOR I = 2 TO 7
  507.         IF SYSOP.FUNCTION(I)   > SF THEN _
  508.            GOTO 11790
  509.       SF = SYSOP.FUNCTION(I)
  510. 11790 NEXT
  511. 11800 MM = MAIN.FUNCTION(1)
  512.       FOR I = 2 TO 21
  513.         IF MAIN.FUNCTION(I)    > MM THEN _
  514.            GOTO 11810
  515.       MM = MAIN.FUNCTION(I)
  516. 11810 NEXT
  517. 11820 FC = FILES.FUNCTION(1)
  518.       FOR I = 2 TO 10
  519.         IF FILES.FUNCTION(I)   > FC THEN _
  520.            GOTO 11830
  521.       FC = FILES.FUNCTION(I)
  522. 11830 NEXT
  523. 11840 UE = UTILITY.FUNCTION(1)
  524.       FOR I = 2 TO 16
  525.         IF UTILITY.FUNCTION(I) > UE THEN _
  526.            GOTO 11850
  527.       UE = UTILITY.FUNCTION(I)
  528. 11850 NEXT
  529. 11860 CLOSE #1
  530.       GOSUB 22340
  531. 11862 GOSUB 50480
  532.       GOSUB 22340
  533. 11864 GOSUB 50530
  534.       GOSUB 22340
  535. 11870 IF EXPERT.USER = 0 THEN _
  536.          EXPERT.USER$ = "NOVICE
  537. 11880 IF EXPERT.USER = -1 THEN _
  538.          EXPERT.USER$ = "EXPERT
  539. 11890 DRIVE.FOR.UPLOADS$ = RIGHT$(DOWNLOAD.DRIVES$,1)
  540. 11900 DRIVES.FOR.DOWNLOADS$ = LEFT$(DOWNLOAD.DRIVES$,(LEN(DOWNLOAD.DRIVES$)-1))
  541. 11910 PROMPT.BELL$ = "ON"
  542.       IF PROMPT.BELL = 0 THEN _
  543.          PROMPT.BELL$ = "OFF
  544. 11912 CODE.TYPE$ = "BASICA"
  545.       IF CODE.TYPE = TRUE THEN _
  546.          CODE.TYPE$ = "COMPILED
  547. 11914 BULLETINS.OPTIONAL$ = "NO"
  548.       IF BULLETINS.OPTIONAL = TRUE THEN _
  549.          BULLETINS.OPTIONAL$ = "YES
  550. 11916 M14$ = "ON"
  551.       IF VAL(MID$(MODEM.INIT.COMMAND$,4,1)) = 0 THEN _
  552.          M14$ = "OFF
  553. 11918 MESSAGE.REMINDER$ = "NO"
  554.       IF MESSAGE.REMINDER = TRUE THEN _
  555.          MESSAGE.REMINDER$ = "YES
  556. 11920 REQUIRE.NON.ASCII$ = "NO"
  557.       IF REQUIRE.NON.ASCII = TRUE THEN _
  558.          REQUIRE.NON.ASCII$ = "YES
  559. 11922 WELCOME.INTERRUPTABLE$ = "YES"
  560.       IF WELCOME.INTERRUPTABLE = FALSE THEN _
  561.          WELCOME.INTERRUPTABLE$ = "NO
  562. 11924 REMIND.FILE.TRANSFERS$ = "NO"
  563.       IF REMIND.FILE.TRANSFERS = TRUE THEN _
  564.          REMIND.FILE.TRANSFERS$ = "YES
  565. 11926 REMIND.PROFILE$ = "NO"
  566.       IF REMIND.PROFILE = TRUE THEN _
  567.          REMIND.PROFILE$ = "YES
  568. 11928 DOORS.AVAILABLE$ = "NO"
  569.       IF DOORS.AVAILABLE = TRUE THEN _
  570.          DOORS.AVAILABLE$ = "YES
  571. 11930 IF SYSOP.PASSWORD.1$ = "" THEN _
  572.          MN1$ = "(Disabled)" ELSE _
  573.          MN1$ = SYSOP.PASSWORD.1$
  574. 11931 IF SYSOP.PASSWORD.2$ = "" THEN _
  575.          MN2$ = "(Disabled)" ELSE _
  576.          MN2$ = SYSOP.PASSWORD.2$
  577. 11932 M11$ = "NO"
  578.       IF PAGING.PRINTER.SUPPORT$ = ". " + CHR$(7) THEN _
  579.          M11$ = "YES
  580. 11934 LIMIT.DAILY.TIME$ = "NO"
  581.       IF LIMIT.DAILY.TIME = TRUE THEN _
  582.          LIMIT.DAILY.TIME$ = "YES
  583. 11936 COMMANDS.BETWEEN.RINGS$ = "NO"
  584.       IF COMMANDS.BETWEEN.RINGS = TRUE THEN _
  585.          COMMANDS.BETWEEN.RINGS$ = "YES
  586. 11938 MNP.SUPPORT$ = "NO"
  587.       IF MNP.SUPPORT = TRUE THEN _
  588.          MNP.SUPPORT$ = "YES
  589. 11940 WILL.SUBDIRS.B.USED$ = "NO"
  590.       IF WILL.SUBDIRS.B.USED = TRUE THEN _
  591.          WILL.SUBDIRS.B.USED$ = "YES
  592. 11942 UPLOAD.TO.SUBDIR$ = "NO"
  593.       IF UPLOAD.TO.SUBDIR = TRUE THEN _
  594.          UPLOAD.TO.SUBDIR$ = "YES
  595. 11944 DOWNLOAD.TO.SUBDIR$ = "NO"
  596.       IF DOWNLOAD.TO.SUBDIR = TRUE THEN _
  597.          DOWNLOAD.TO.SUBDIR$ = "YES
  598. 11946 RESTRICT.BAUD$ = "NO"
  599.       IF RESTRICT.BAUD = TRUE THEN _
  600.          RESTRICT.BAUD$ = "YES
  601. 11947 IF RESTRICT.BAUD=-2 THEN _
  602.          RESTRICT.BAUD$="YES=Registered users"
  603. 11948 USE.COLOR$ = "NO"
  604.       IF USE.COLOR = TRUE THEN _
  605.          USE.COLOR$ = "YES
  606. 11950 DISKFULL.GO.OFFLINE$ = "NO"
  607.       IF DISKFULL.GO.OFFLINE = TRUE THEN _
  608.          DISKFULL.GO.OFFLINE$ = "YES
  609. 11952 EXTENDED.LOGGING$ = "NO"
  610.       IF EXTENDED.LOGGING = TRUE THEN _
  611.          EXTENDED.LOGGING$ = "YES
  612. 11953 DUMB.MODEM$ = "NO"
  613.       IF DUMB.MODEM = TRUE THEN _
  614.          DUMB.MODEM$ = "YES
  615. 11954 COMMENTS.AS.MESSAGES$="NO"
  616.       IF COMMENTS.AS.MESSAGES = TRUE THEN _
  617.          COMMENTS.AS.MESSAGES$="YES
  618. 11955 TURBO.RBBS$="NO"                                               ' CPC14-1C
  619.       IF TURBO.RBBS = TRUE THEN _                                    ' CPC14-1C
  620.          TURBO.RBBS$ = "YES"                                         ' CPC14-1C
  621. '
  622. ' *****************************************************************************
  623. ' * IF A MESSAGE FILE EXISTS, READ IN THE PARAMETERS IN IT.                   *
  624. ' *****************************************************************************
  625. '
  626. 12150 Y$ = "
  627. 12151 F = 0
  628. 12155 MAINMSG$ = MAIN.MESSAGE.FILE$
  629. 12156 MAINUSR$ = MAIN.USER.FILE$
  630. 12160 KEY OFF
  631.       GOSUB 22340
  632. 12161 CALLS.TODATE!          = 0                          ' set initial message number to 0
  633. 12162 FIRST.USER.RECORD      = 1                          ' USERS file    -- first record number
  634. 12163 CURRENT.USER.COUNT     = FIRST.USER.RECORD          ' USERS file    -- next available record number
  635. 12164 HIGHEST.USER.RECORD    = MAX.USR.FILE.SIZE.FRM.DEF  ' USERS file    -- last record number
  636. 12165 FIRST.MESSAGE.RECORD   = 2+ MAXIUM.NUMBER.OF.NODES  ' MESSAGES file -- first record of messages
  637. 12166 NEXT.MESSAGE.RECORD    = FIRST.MESSAGE.RECORD       ' MESSAGES file -- next available record number
  638. 12167 HIGHEST.MESSAGE.RECORD = 5*MAX.ALLOWED.MSGS.FRM.DEF _
  639.                                + 1 + MAXIUM.NUMBER.OF.NODES ' MESSAGES file -- last record number
  640. 12168 MAXIMUM.NUMBER.OF.MSGS = MAX.ALLOWED.MSGS.FRM.DEF   ' MESSAGES file -- maximum number of messages
  641. 12169 FILE$ = MAIN.MESSAGE.FILE$
  642.       MESSAGE.FILE.FOUND = 0
  643.       USER.FILE.FOUND = 0
  644. 12170 GOSUB 30000        
  645. '
  646. ' If MESSAGES exist, get checkpoint record
  647. '
  648. 12171 IF OKAY THEN _
  649.          MESSAGE.FILE.FOUND = OKAY : _
  650.          GOSUB 30040 : _
  651.          MAX.USR.FILE.SIZE.FRM.DEF = HIGHEST.USER.RECORD : _
  652.          MAX.MSG.FILE.SIZE.FRM.DEF! = HIGHEST.MESSAGE.RECORD : _
  653.          MAX.ALLOWED.MSGS.FRM.DEF  = INT((HIGHEST.MESSAGE.RECORD-FIRST.MESSAGE.RECORD)/5) + 1
  654. 12172 IF MAX.ALLOWED.MSGS.FRM.DEF > 999 THEN _
  655.          MAX.ALLOWED.MSGS.FRM.DEF = VAL("999")
  656. 12173 IF MAXIMUM.NUMBER.OF.MSGS < 1 THEN _
  657.          MAXIMUM.NUMBER.OF.MSGS = MAX.ALLOWED.MSGS.FRM.DEF : _
  658.          GOSUB 30450                  ' Assure number of msgs.>0
  659. 12174 FILE$ = MAIN.USER.FILE$         ' Check for USERS file
  660. 12175 GOSUB 30000
  661. '
  662. ' If USERS file exist, set values
  663. '
  664. 12176 IF OKAY THEN _
  665.          USER.FILE.FOUND = OKAY : _
  666.          FILE$ = MAIN.USER.FILE$ : _
  667.          GOSUB 30180 : _
  668.          MAX.USR.FILE.SIZE.FRM.DEF = HIGHEST.USER.RECORD
  669. 12177 IF MESSAGE.FILE.FOUND <> -1 AND F <> 2 THEN _
  670.          CURRENT.USER.COUNT = UG + 1   ' if no MESSAGES file, assume USERS full
  671. 12178 IF MESSAGE.FILE.FOUND = -1 THEN _
  672.          GOSUB 30450                   ' if MESSAGES file, re-write checkpoint
  673. 12179 IF MESSAGE.FILE.FOUND <> -1 THEN _
  674.          GOSUB 30230                   ' write new MESSAGES file if none
  675. 12180 IF USER.FILE.FOUND <> -1 AND MESSAGE.FILE.FOUND = -1 THEN _
  676.          MAX.USR.FILE.SIZE.FRM.DEF = HIGHEST.USER.RECORD : _
  677.          GOSUB 50000                   ' write new USERS file if none
  678. 12181 IF USER.FILE.FOUND <> -1 AND MESSAGE.FILE.FOUND <> -1 THEN _
  679.          GOSUB 50000                   ' write new USERS file if none
  680. 12182 FOR I = 1 TO 10
  681.         KEY I,""
  682.       NEXT
  683. 12183 B1 = MAX.USR.FILE.SIZE.FRM.DEF
  684.       GOSUB 22140
  685. '
  686. ' *****************************************************************************
  687. ' *  DISPLY CONFIG'S MAIN FUNCTION KEY MENU                                   *
  688. ' *****************************************************************************
  689. '
  690. 12190 COLOR FG,BG,BORDER
  691.       CLS
  692.       I! = FRE(C$)
  693. 12200 COLOR 0,7,0
  694.       LOCATE 4,10
  695.       PRINT "RBBS-PC CPC14.1 CONFIGURATION PROGRAM " + CONFIG.VERSION$
  696.       COLOR FG,BG,BORDER
  697. 12210 LOCATE 1,1,0
  698.       PRINT "Copyright (c) 1983, 1984, 1985, 1986 Tom Mack"
  699. 12211 LOCATE 2,1,0
  700.       PRINT "10210 Oxfordshire Rd., Great Falls, VA 22066";
  701. 12215 IF F THEN _
  702.          GOSUB 24970
  703. 12220 LOCATE  6,2
  704.       PRINT "  F1            Global RBBS-PC Parameters (part 1)
  705. 12230 LOCATE  8,2
  706.       PRINT "  F2            Global RBBS-PC Parameters (part 2)
  707. 12240 LOCATE 10,2
  708.       PRINT "  F3            Parameters for static RBBS-PC Files
  709. 12250 LOCATE 12,2
  710.       PRINT "  F4            Parameters for dynamic RBBS-PC's Files
  711. 12260 LOCATE 14,2
  712.       PRINT "  F5            Parameters for RBBS-PC's 'Doors'
  713. 12270 LOCATE 16,2
  714.       PRINT "  F6            Parameters for RBBS-PC's Security
  715. 12280 LOCATE 18,2
  716.       PRINT "  F7            Parameters for multiple RBBS-PC's
  717. 12290 LOCATE 20,2
  718.       PRINT "  F8            RBBS-PC utilities
  719. 12295 LOCATE 22,2
  720.       PRINT "  F9            Use of DOS subdirectories"
  721.       XX$ = "Press END to terminate or select function key to change parameters shown."
  722.       GOSUB 50345
  723. 12310 GOSUB 22160
  724. 12320 IF IX THEN _
  725.          ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,12350,12360,12350
  726. 12330 GOTO 12310
  727. 12350 GOSUB 60380
  728.       GOTO 12310
  729. '
  730. ' *****************************************************************************
  731. ' *  DISPLYA GLOBAL RBBS-PC PARAMETERS  (PART 1)                              *
  732. ' *****************************************************************************
  733. '
  734. 12360 DISPLAYED.PAGE.NUMBER = 1
  735. 12370 GOSUB 24800
  736. 12380 LOCATE  3,10
  737.       PRINT " 1. SYSOP's First Name --------------------------- " + SYSOP.FIRST.NAME$
  738. 12390 LOCATE  4,10
  739.       PRINT " 2. SYSOP's Last Name ---------------------------- " + SYSOP.LAST.NAME$
  740. 12400 LOCATE  5,10
  741.       PRINT " 3. Password #1 for SYSOP to sign on remotely ---- " + MN1$
  742. 12410 LOCATE  6,10
  743.       PRINT " 4. Password #2 for SYSOP to sign on remotely----- " + MN2$
  744. 12420 LOCATE  7,10
  745.       PRINT " 5. Password for SYSOP to sign on locally -------- " + LOCAL.PASSWORD$
  746. 12430 LOCATE  8,10
  747.       PRINT " 6. SYSOP's default sign-on mode ----------------- " + EXPERT.USER$
  748. 12440 LOCATE  9,10
  749.       PRINT " 7. SYSOP's office hours ------------------------ "STR$(START.OFFICE.HOURS);" to "STR$(END.OFFICE.HOURS)
  750. 12445 LOCATE 10,10
  751.       PRINT " 8. Page SYSOP using printer's bell -------------- " + M11$
  752. 12450 LOCATE 11,10
  753.       PRINT " 9. Number of rings to wait before answering -----"STR$(REQUIRED.RINGS)
  754.       IF MID$(MODEM.INIT.COMMAND$,24,5) = "255  " THEN _             ' CPC14-1D
  755.      LOCATE 11,63 : _                                            ' CPC14-1D
  756.      PRINT "RING BACK";                                          ' CPC14-1D
  757. 12460 LOCATE 12,10
  758.       PRINT "10. Deny access to callers who use 300 baud ------ " + RESTRICT.BAUD$
  759. 12470 LOCATE 13,10
  760.       PRINT "11. Are you using ANSI.SYS with a color monitor -- " + USE.COLOR$
  761. 12480 LOCATE 14,10
  762.       PRINT "12. Go off-line whenever a DISK FULL occurs ------ " + DISKFULL.GO.OFFLINE$
  763. 12490 LOCATE 15,10
  764.       PRINT "13. Prompt bell default is ----------------------- " + PROMPT.BELL$
  765. 12500 LOCATE 16,10
  766.       PRINT "14. Maximum time per session (in minutes) --------"STR$(MINUTES.PER.SESSION!)
  767. 12510 LOCATE 17,10
  768.       PRINT "15. Limit each user to" + STR$(MINUTES.PER.SESSION!) + " minutes/day? " + STRING$((14-LEN(STR$(MINUTES.PER.SESSION!))),45) + " " + LIMIT.DAILY.TIME$
  769. 12530 LOCATE 18,10
  770.       PRINT "16. # Months of inactivty before user deleted ----"STR$(ACT.MNTHS.B4.DELETING)
  771. 12560 LOCATE 19,10
  772.       PRINT "17. Communications port to be used by RBBS-PC ---- " + COM.PORT$
  773. 12570 LOCATE 20,10
  774.       PRINT "18. # of seconds to wait for modem to initialize -"STR$(MODEM.INIT.WAIT.TIME)  ' CPC14-1C
  775.       LOCATE 21, 10
  776.       PRINT "19. Seconds to wait before issuing modem commands-"STR$(MODEM.COMMAND.DELAY.TIME) ' CPC14-1C
  777. 12575 LOCATE 22,10
  778.       PRINT "20. Name of RBBS-PC shown initially is ----------- " + RBBS.NAME$
  779. 12580 GOSUB 24890
  780. 12590 GOSUB 22160
  781. 12600 IF IX THEN _
  782.          ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,12190,14200,12620
  783. 12610 GOTO 12590
  784. 12620 GOSUB 50340
  785.       IF VAL(HJ$) < 1 OR VAL(HJ$) > 20 THEN _                        ' CPC14-1C
  786.          GOTO 12580
  787.       ON VAL(HJ$) GOTO 12840,12910,12980,13060,12670,13140,13210,13224,13228,13238,13245,13249,13750,13840,16650,13940,14120,15240,15250,13131 ' CPC14-1C
  788. '
  789. ' *****************************************************************************
  790. ' * PROCESS THE PASSWORD SELECTED FOR THE LOCAL SYSOP TO TAKE OVER RBBS-PC    *
  791. ' *****************************************************************************
  792. '
  793. 12670 GOSUB 31060
  794.       PRINT "Enter password (8 characters or less)";
  795.       GOSUB 14990
  796.       IF LEN(HJ$)>8 OR INSTR(HJ$,"0!") THEN _
  797.          HJ$ = "5" : _
  798.          GOTO 12670                                                  ' CPC14-1C
  799.       LOCAL.PASSWORD$ = HJ$                                          ' CPC14-1C
  800.       GOTO 12360                                                     ' CPC14-1C
  801. '
  802. ' *****************************************************************************
  803. ' * PROCESS NAME OF UPLOAD DIRECTORY                                          *
  804. ' *****************************************************************************
  805. '
  806. 12730 GOSUB 13590
  807.       UPLOAD.DIRECTORY$ = HJ$
  808.       GOTO 14570
  809. '
  810. ' *****************************************************************************
  811. ' * GET THE SYSOP'S FIRST NAME                                                *
  812. ' *****************************************************************************
  813. '
  814. 12840 LOCATE 24,5
  815.       PRINT "What is the SYSOP's FIRST name? ";
  816. 12850 LINE INPUT;HJ$
  817. 12860 IF HJ$ = "" THEN _
  818.          GOTO 12840
  819. 12870 IF LEN(HJ$) < 3 THEN _
  820.          GOTO 12840
  821. 12880 GOSUB 50654
  822. 12890 SYSOP.FIRST.NAME$ = HJ$
  823. 12900 GOTO 12360
  824. '
  825. ' *****************************************************************************
  826. ' * PROCESS THE SYSOP'S LAST NAME                                             *
  827. ' *****************************************************************************
  828. '
  829. 12910 LOCATE 24,5
  830.       PRINT "What is the SYSOP's LAST name? ";
  831. 12920 LINE INPUT;HJ$
  832. 12930 IF HJ$ = "" THEN _
  833.          GOTO 12910
  834. 12940 IF LEN(HJ$) < 3 THEN _
  835.          GOTO 12910
  836. 12950 GOSUB 50654
  837. 12960 SYSOP.LAST.NAME$ = HJ$
  838. 12970 GOTO 12360
  839. '
  840. ' *****************************************************************************
  841. ' * PROCESS THE "PSEUDONYM" (FIRST NAME) USED BY THE SYSOP TO LOGON REMOTELY  *
  842. ' *****************************************************************************
  843. '
  844. 12980 LOCATE 24,5
  845.       PRINT "What is the SYSOP's Password #1? ";
  846. 12990 LINE INPUT;HJ$
  847. 13020 GOSUB 50654
  848. 13030 SYSOP.PASSWORD.1$ = HJ$
  849. 13040 IF SYSOP.PASSWORD.1$ = "" THEN _
  850.          MN1$ = "(Disabled)" ELSE _
  851.          MN1$ = SYSOP.PASSWORD.1$
  852. 13050 GOTO 12360
  853. '
  854. ' *****************************************************************************
  855. ' * PROCESS THE "PSEUDONYM" (LAST NAME) USED BY THE SYSOP TO LOGON REMOTELY   *
  856. ' *****************************************************************************
  857. '
  858. 13060 LOCATE 24,5
  859.       PRINT "What is the SYSOP's Password #2? ";
  860. 13070 LINE INPUT;HJ$
  861. 13100 GOSUB 50654
  862. 13110 SYSOP.PASSWORD.2$ = HJ$
  863. 13120 IF SYSOP.PASSWORD.2$ = "" THEN _
  864.          MN2$ = "(Disabled)" ELSE _
  865.          MN2$ = SYSOP.PASSWORD.2$
  866. 13130 GOTO 12360
  867. '
  868. ' *****************************************************************************
  869. ' * ALLOW THE SYSOP TO GIVE THIS RBBS-PC A PERSONAL NAME                      *
  870. ' *****************************************************************************
  871. '
  872. 13131 LOCATE 24,5
  873.       PRINT "Enter name for this RBBS-PC (19 characters or less) ";
  874. 13132 LINE INPUT;HJ$
  875. 13133 IF LEN(HJ$) > 19 THEN _
  876.          GOTO 13131
  877. 13134 GOSUB 50654
  878. 13135 RBBS.NAME$ = HJ$
  879. 13136 GOTO 12360
  880. '
  881. ' *****************************************************************************
  882. ' * ALLOW THE SYSOP TO SELECT "EXPERT" OR "NOVICE" AS HIS DEFAULT MODE        *
  883. ' *****************************************************************************
  884. '
  885. 13140 LOCATE 24,5
  886.       PRINT "SYSOP's default sign-on mode (EXPERT/NOVICE)? ";
  887. 13150 LINE INPUT;HJ$
  888. 13160 IF LEN(HJ$) = 6 OR LEN(HJ$) = 1 THEN _
  889.          GOTO 13170
  890.       GOTO 13140
  891. 13170 GOSUB 50654
  892. 13180 IF HJ$ = "E" OR HJ$ = "EXPERT" THEN _
  893.          EXPERT.USER$ = "EXPERT" : _
  894.          GOTO 12360
  895. 13190 IF HJ$ = "N" OR HJ$ = "NOVICE" THEN _
  896.          EXPERT.USER$ = "NOVICE" :_
  897.          GOTO 12360
  898. 13200 GOTO 13140
  899. '
  900. ' *****************************************************************************
  901. ' * ALLOW THE SYSOP TO SELECT HIS "OFFICE HOURS"                              *
  902. ' *****************************************************************************
  903. '
  904. 13210 LOCATE 24,5 
  905.       PRINT "What is the earliest SYSOP wants to be paged? -- HHMM ";
  906. 13211 LINE INPUT;HJ$
  907. 13212 IF LEN(HJ$) <> 4 THEN _
  908.          GOTO 13210
  909. 13213 IF FIX(VAL(MID$(HJ$,1,2))) < 0 OR _
  910.          FIX(VAL(MID$(HJ$,1,2))) > 24 OR _
  911.          FIX(VAL(MID$(HJ$,3,2))) < 0 OR _
  912.          FIX(VAL(MID$(HJ$,3,2))) > 59 THEN _
  913.          GOTO 13210
  914. 13214 START.OFFICE.HOURS = VAL(HJ$)
  915. 13215 IF START.OFFICE.HOURS < 0 OR START.OFFICE.HOURS > 2400 THEN _
  916.          GOTO 13210
  917. 13216 LOCATE 25,5 
  918.       PRINT "What is the latest SYSOP wants to be paged? ---- HHMM ";
  919. 13217 LINE INPUT;HJ$
  920. 13218 IF LEN(HJ$) <> 4 THEN _
  921.          GOTO 13216
  922. 13219 IF FIX(VAL(MID$(HJ$,1,2))) < 0 OR _
  923.          FIX(VAL(MID$(HJ$,1,2))) > 24 OR _
  924.          FIX(VAL(MID$(HJ$,3,2))) < 0 OR _
  925.          FIX(VAL(MID$(HJ$,3,2))) > 59 THEN _
  926.          GOTO 13216
  927. 13220 END.OFFICE.HOURS = VAL(HJ$)
  928. 13221 IF END.OFFICE.HOURS < 0 OR END.OFFICE.HOURS > 2400 THEN _
  929.          GOTO 13216
  930. 13222 IF START.OFFICE.HOURS > END.OFFICE.HOURS THEN _
  931.          SWAP START.OFFICE.HOURS,END.OFFICE.HOURS
  932. 13223 GOTO 12360
  933. '
  934. ' *****************************************************************************
  935. ' * DETERMINE IF THE PRINTER'S "BELL" IS TO BE USED WHEN PAGING               *
  936. ' *****************************************************************************
  937. '
  938. 13224 XX$ = "Use on-line printer's bell to the page SYSOP? (YES or NO) " 
  939.       GOSUB 50345 
  940.       GOSUB 22380 
  941.       ON AB GOTO 13226,13226,13224,13224
  942. 13226 M11$ = HJ$
  943. 13227 GOTO 12360
  944. '
  945. ' *****************************************************************************
  946. ' * DETERMINE THE NUMBER OF RINGS RBBS-PC IS TO WAIT BEFORE ANSWERING         *
  947. ' *****************************************************************************
  948. '
  949. 13228 A$ = "" 
  950. 13229 XX$ = "How many rings should RBBS-PC wait before answering? " + A$ 
  951.       GOSUB 50345
  952. 13230 LINE INPUT;HJ$
  953. 13231 REQUIRED.RINGS = FIX(VAL(HJ$))
  954. 13232 IF REQUIRED.RINGS < 0 OR REQUIRED.RINGS > 255 THEN _
  955.          GOTO 13228
  956.       IF REQUIRED.RINGS = 0 THEN _
  957.      MID$(MODEM.INIT.COMMAND$,6,1) = "0" : _                     ' CPC14-1D
  958.      MID$(MODEM.INIT.COMMAND$,24,5) = "1V1X1" : _                ' CPC14-1D
  959.          GOTO 12360
  960. 13233 XX$ = "Next call answered after" + STR$(REQUIRED.RINGS) + " rings. Do you want ringback? (YES/NO)" 
  961.       GOSUB 50345
  962. 13234 GOSUB 22380 
  963.       ON AB GOTO 13237,13235,13233,13233
  964. 13235 IF REQUIRED.RINGS > 5 THEN _
  965.          A$ = "(<6 for ringback)" : _
  966.          GOTO 13229
  967. 13236 MID$(MODEM.INIT.COMMAND$,24,5) = "255  " 
  968.       GOTO 12360
  969. 13237 MID$(MODEM.INIT.COMMAND$,24,5) = "254  "                       ' CPC14-1D
  970.       GOTO 12360
  971. '
  972. ' *****************************************************************************
  973. ' * ALLOW THE SYSOP TO ELECT TO HANDLE CALLS FROM 300 BAUD USERS              *
  974. ' *****************************************************************************
  975. '
  976. 13238 LOCATE 24,5
  977.       PRINT"Do you want to decline calls from users at 300 BAUD (YES OR NO) ";
  978. 13239 GOSUB 22380
  979.       ON AB GOTO 13243,13240,13238,13238
  980. 13240 GOSUB 50340
  981.       LOCATE 24,5
  982.       PRINT"Are registered users denied use of 300 BAUD (YES OR NO) ";
  983. 13241 GOSUB 22380
  984.       ON AB GOTO 13242,13243,13240,13240
  985. 13242 HJ$="YES=Registered users"
  986. 13243 RESTRICT.BAUD$=HJ$
  987. 13244 GOTO 12360
  988. '
  989. ' *****************************************************************************
  990. ' * ALLOW THE SYSOP TO ELECT TO DISPLAY COLOR/GRAPHICS ON HIS LOCAL MONITOR   *
  991. ' *****************************************************************************
  992. '
  993. 13245 LOCATE 24,5
  994.       PRINT" Using ANSI.SYS for color/graphics on your color monitor (YES OR NO) ";
  995. 13246 GOSUB 22380
  996.       ON AB GOTO 13247,13247,13245,13245
  997. 13247 USE.COLOR$=HJ$
  998. 13248 GOTO 12360
  999. '
  1000. ' *****************************************************************************
  1001. ' * ALLOW THE SYSOP TO ELECT TO GO OFF-LINE WHEN A DISK FULL CONDITIONS OCCURS*
  1002. ' *****************************************************************************
  1003. '
  1004. 13249 LOCATE 24,5
  1005.       PRINT"Should RBBS-PC go off-line when DISK FULL occurs (YES OR NO) ";
  1006. 13250 GOSUB 22380
  1007.       ON AB GOTO 13251,13251,13249,13249
  1008. 13251 DISKFULL.GO.OFFLINE$=HJ$
  1009. 13252 GOTO 12360
  1010. '
  1011. ' *****************************************************************************
  1012. ' * REQUEST DRIVE SPECIFICATION IN THE RANGE "A" TO THE MAXIMUM ALLOWABLE     *
  1013. ' *****************************************************************************
  1014. '
  1015. 13253 LOCATE 24,5
  1016.       PRINT"Specify single drive in the range A->"+M$+" for "+A$;
  1017. 13254 LINE INPUT;HJ$
  1018. 13420 IF LEN(HJ$) <> 1 THEN _
  1019.          GOTO 13253
  1020. 13430 GOSUB 50654
  1021. 13440 IF HJ$ < "A" OR HJ$ > M$ THEN _
  1022.          GOTO 13253
  1023. 13460 RETURN
  1024. '
  1025. ' *****************************************************************************
  1026. ' * ALLOW THE DRIVES AVAILABLE FOR DOWNLOADING TO BE SELECTED                 *
  1027. ' *****************************************************************************
  1028. '
  1029. 13470 LOCATE 24,5 
  1030.       PRINT "Specify download drives (max of" + STR$(MAXD) + " in the range A-> " + M$ + "). ";
  1031. 13480 LINE INPUT;HJ$
  1032. 13490 IF LEN(HJ$) < 1 OR LEN(HJ$) > MAXD THEN _
  1033.          GOTO 13470
  1034. 13500 GOSUB 50654
  1035. 13510 FOR I = 1 TO LEN(HJ$)
  1036. 13520   A$(I) = MID$(HJ$,I,1)
  1037. 13530 NEXT
  1038. 13540 FOR I = 1 TO LEN(HJ$)
  1039. 13550   IF A$(I) < "A" OR A$(I) > M$ THEN _
  1040.            GOTO 13470
  1041. 13560 NEXT
  1042. 13570 DRIVES.FOR.DOWNLOADS$ = HJ$
  1043. 13571 IF DNLD.SUB < 1 THEN _
  1044.          GOTO 14570
  1045. 13572 FOR I = 1 TO DNLD.SUB
  1046. 13573   IF INSTR(1,DRIVES.FOR.DOWNLOADS$,LEFT$(DNLD$(I),1)) = 0 THEN _
  1047.            DNLD$(I) = ""
  1048. 13577 NEXT
  1049. 13578 STOPIT = DNLD.SUB
  1050. 13579 FOR I = 1 TO STOPIT
  1051. 13580   IF DNLD$(I) <> "" THEN _
  1052.            GOTO 13583
  1053. 13581   DNLD$(I) = DNLD$(I + 1)
  1054. 13582   DNLD$(I + 1) = ""
  1055. 13583 NEXT
  1056. 13584 DNLD.SUB = 0
  1057. 13585 FOR I = 1 TO STOPIT
  1058. 13586   IF DNLD$(I) <> "" THEN _
  1059.            DNLD.SUB = DNLD.SUB + 1
  1060. 13587 NEXT
  1061. 13588 GOTO 14570
  1062. '
  1063. ' *****************************************************************************
  1064. ' * DETERMINE THE NAME OF THE UPLOAD DIRECTORY (A TEXT FILE)                  *
  1065. ' *****************************************************************************
  1066. '
  1067. 13590 A$ = "Name of upload directory (max of 8 characters)." 
  1068.       MAX = 8 
  1069.       GOTO 13599
  1070. 13591 A$ = "Master directory name--used as ext. for others. (3 char. max)." 
  1071.       MAX = 3
  1072. 13599 LOCATE 24,5 
  1073.       PRINT A$;
  1074. 13600 LINE INPUT;HJ$ 
  1075.       GOSUB 50654
  1076. 13610 IF LEN(HJ$) < 1 OR LEN(HJ$) > MAX THEN _
  1077.          GOTO 13599
  1078. 13615 I = 0 
  1079.       GOSUB 25920 
  1080.       IF I = 0 THEN _
  1081.          RETURN
  1082.       GOTO 13599
  1083. '
  1084. ' *****************************************************************************
  1085. ' * IS THE DEFAULT TO HAVE THE PROMPT BELL ON AFTER EACH COMMAND?             *
  1086. ' *****************************************************************************
  1087. '
  1088. 13750 LOCATE 24,5 
  1089.       PRINT "Prompt bell default? (ON or OFF) ";
  1090. 13760 LINE INPUT;HJ$
  1091. 13770 IF LEN(HJ$) < 1 OR LEN(HJ$) > 3 THEN _
  1092.          GOTO 13750
  1093. 13780 GOSUB 50654
  1094. 13790 IF HJ$ = "ON"  THEN _
  1095.          GOTO 13820
  1096. 13800 IF HJ$ = "OFF" THEN _
  1097.          GOTO 13820
  1098. 13810 GOTO 13750
  1099. 13820 PROMPT.BELL$ = HJ$
  1100. 13830 GOTO 12360
  1101. '
  1102. ' *****************************************************************************
  1103. ' * SPECIFY THE MAXIMUM TIME A USER CAN STAY ON (THE DEFAULT)                 *
  1104. ' *****************************************************************************
  1105. '
  1106. 13840 LOCATE 24,5 
  1107.       PRINT "Set maximum minutes a user can stay on the system ";
  1108. 13850 LINE INPUT;HJ$
  1109. 13860 MINUTES.PER.SESSION! = VAL(HJ$)
  1110. 13870 IF MINUTES.PER.SESSION! < 0 OR MINUTES.PER.SESSION! > 1440 THEN _
  1111.          GOTO 13840
  1112. 13880 GOTO 12360
  1113. '
  1114. ' ******************************************************************************
  1115. ' * ALLOW THE MAXIMUM NUMBER OF MESSAGES ALLOWED TO BE SELECTED                *
  1116. ' ******************************************************************************
  1117. '
  1118. 13890 J = 999  
  1119.       IF ((MAX.MSG.FILE.SIZE.FRM.DEF!-1-MAXIUM.NUMBER.OF.NODES)/5)<J THEN _
  1120.          J = (MAX.MSG.FILE.SIZE.FRM.DEF!-1-MAXIUM.NUMBER.OF.NODES)/5
  1121. 13895 GOSUB 50340 
  1122.       LOCATE 24,5 
  1123.       PRINT "Set maximum number of messages allowed (MAX = " + STR$(FIX(J)) + ")";
  1124. 13900 LINE INPUT;HJ$
  1125. 13910 MAX.ALLOWED.MSGS.FRM.DEF = VAL(HJ$)
  1126. 13920 IF MAX.ALLOWED.MSGS.FRM.DEF < 1 AND _
  1127.          MAX.ALLOWED.MSGS.FRM.DEF > 999 THEN _
  1128.          GOTO 13890
  1129. 13922 IF MAX.ALLOWED.MSGS.FRM.DEF > 0 AND _
  1130.          MAX.ALLOWED.MSGS.FRM.DEF < 1000 AND _
  1131.          MAX.ALLOWED.MSGS.FRM.DEF < J + 1 THEN _
  1132.          GOTO 13929
  1133. 13924 XX$ = "Increase the " + MAIN.MESSAGE.FILE$ + " file to " + STR$((MAX.ALLOWED.MSGS.FRM.DEF*5) + 1 + MAXIUM.NUMBER.OF.NODES) + " records? (YES OR NO) " 
  1134.       GOSUB 50345
  1135. 13926 GOSUB 22380 
  1136.       ON AB GOTO 13890,13927,13890,13890
  1137. 13927 MAXIMUM.NUMBER.OF.MSGS = MAX.ALLOWED.MSGS.FRM.DEF 
  1138.       GOSUB 30450 
  1139.       B3! = (MAX.ALLOWED.MSGS.FRM.DEF*5) + 1 + MAXIUM.NUMBER.OF.NODES 
  1140.       GOSUB 22080 
  1141.       GOTO 21550
  1142. 13929 MAXIMUM.NUMBER.OF.MSGS = MAX.ALLOWED.MSGS.FRM.DEF 
  1143.       GOSUB 30450
  1144. 13930 GOTO 21550
  1145. '
  1146. ' *****************************************************************************
  1147. ' * IDENTIFY THE NUMBER OF MONTHS A USER CAN BE INACTIVE BEFORE HE IS PURGED  *
  1148. ' *****************************************************************************
  1149. '
  1150. 13940 LOCATE 24,5 
  1151.       PRINT "Set number of months before an inactive user is purged. ";
  1152. 13950 LINE INPUT;HJ$
  1153. 13960 ACT.MNTHS.B4.DELETING = VAL(HJ$)
  1154. 13970 IF ACT.MNTHS.B4.DELETING < 1 OR ACT.MNTHS.B4.DELETING > 12 THEN _
  1155.          GOTO 13940
  1156. 13980 GOTO 12360
  1157. '
  1158. ' *****************************************************************************
  1159. ' * SPECIFY THE COMMUNICATIONS PORT TO BE USED (1 OR 2)                       *
  1160. ' *****************************************************************************
  1161. '
  1162. 14120 COM1 = 1
  1163. 14130 COM2 = 2
  1164. 14140 LOCATE 24,5 
  1165.       PRINT "Number of communication port to be used (" + STR$(COM1) + " or" + STR$(COM2) + " )? ";
  1166. 14150 LINE INPUT;HJ$
  1167. 14160 IF LEN(HJ$) <> 1 THEN _
  1168.          GOTO 14120
  1169. 14170 IF FIX(VAL(MID$(HJ$,1,1))) < COM1 OR _
  1170.          FIX(VAL(MID$(HJ$,1,1))) > COM2 THEN _
  1171.          GOTO 14120
  1172. 14180 COM.PORT$ = "COM" + HJ$
  1173. 14190 GOTO 12360
  1174. '
  1175. ' *****************************************************************************
  1176. ' *  DISPLAY GLOBAL RBBS-PC PARAMETERS (PART 1)                               *
  1177. ' *****************************************************************************
  1178. '
  1179. 14200 DISPLAYED.PAGE.NUMBER = 2
  1180. 14210 GOSUB 24800
  1181. 14220 LOCATE  3,10 
  1182.       PRINT "21. Foreground color (for color monitors) is -----"STR$(FG)
  1183. 14230 LOCATE  4,10 
  1184.       PRINT "22. Background color (for color monitors) is -----"STR$(BG)
  1185. 14240 LOCATE  5,10 
  1186.       PRINT "23. The border color (for color monitors) is -----"STR$(BORDER)
  1187. 14250 LOCATE  6,10 
  1188.       PRINT "24. The modem speaker default is ----------------- " + M14$
  1189. 14260 LOCATE  7,10 
  1190.       PRINT "25. Remind users of messages that they left ------ " + MESSAGE.REMINDER$
  1191. 14270 LOCATE  8,10 
  1192.       PRINT "26. Remind users of # uploads and downloads? ----- " + REMIND.FILE.TRANSFERS$
  1193. 14275 LOCATE  9,10 
  1194.       PRINT "27. Remind users of their terminal profile? ------ " + REMIND.PROFILE$
  1195. 14280 LOCATE 10,10 
  1196.       PRINT "28. Default user page length is ------------------"STR$(PAGE.LENGTH)
  1197. 14290 LOCATE 11,10 
  1198.       PRINT "29. Maximum number of lines allowed per message --"STR$(MAX.MESSAGE.LINES)
  1199. 14300 LOCATE 12,10 
  1200.       PRINT "30. Require non-ascii protocol for binary files -- " + REQUIRE.NON.ASCII$
  1201. 14305 LOCATE 13,10 
  1202.       PRINT "31. Is MICROCOM's MNP protocol available? -------- " + MNP.SUPPORT$
  1203. 14310 LOCATE 14,10 
  1204.       PRINT "32. Omit ";DIRECTORY.EXTENTION$;" from N)ew command ";STRING$(22-LEN(DIRECTORY.EXTENTION$),"-");" ";OMIT.MAIN.DIRECTORY$
  1205. 14320 LOCATE 15,10 
  1206.       PRINT "33. Omit "; + UPLOAD.DIRECTORY$;" from N)ew command ";STRING$(22-LEN(UPLOAD.DIRECTORY$),"-");" ";OMIT.UPLOAD.DIRECTORY$
  1207. 14330 LOCATE 16,10 
  1208.       PRINT "34. Is system 'welcome' interruptable? ----------- " + WELCOME.INTERRUPTABLE$
  1209. 14340 LOCATE 17,10 
  1210.       PRINT "35. Are system bulletins to be 'optional'? ------- " + BULLETINS.OPTIONAL$
  1211. 14360 GOSUB 16062  
  1212.       LOCATE 18,10 
  1213.       PRINT "36. Type of PC RBBS-PC will be running on? ------- " + COMPUTER.TYPE$
  1214. 14365 LOCATE 19,10 
  1215.       PRINT "37. Issue modem commands between rings ----------- " + COMMANDS.BETWEEN.RINGS$
  1216. 14366 LOCATE 20,10 
  1217.       PRINT "38. Baud rate to initially open modem at --------- " + MODEM.INIT.BAUD$
  1218. 14367 LOCATE 21,10 
  1219.       PRINT "39. Seconds waited before logging off idle users -" + STR$(WAIT.BEFORE.DISCONNECT)
  1220. 14368 LOCATE 22,10 
  1221.       PRINT "40. Are you using a 'DUMB' auto-answer modem? -----" + DUMB.MODEM$
  1222. 14370 GOSUB 24890
  1223. 14380 GOSUB 22160
  1224. 14390 IF IX THEN _
  1225.          ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,12360,14570,14410
  1226. 14400 GOTO 14380
  1227. 14410 GOSUB 50340 
  1228.       IF VAL(HJ$) < 21 OR VAL(HJ$) > 40 THEN _
  1229.          GOTO 14370 
  1230.       ON VAL(HJ$)-20 GOTO 14420,14430,14440,15710,15800,16690,16722,16730,16790,15880,15911,15920,15960,16000,15840,16040,16121,16124,16031,16725
  1231. 14420 GOSUB 15520 
  1232.       GOTO  15530
  1233. 14430 GOSUB 15520 
  1234.       GOTO  15590
  1235. 14440 GOSUB 15520 
  1236.       GOTO 15650
  1237. '
  1238. ' *****************************************************************************
  1239. ' *  DISPLAY PARAMETERS FOR STATIC RBBS-PC FILES                              *
  1240. ' *****************************************************************************
  1241. '
  1242. 14570 DISPLAYED.PAGE.NUMBER = 3
  1243. 14580 GOSUB 24800
  1244. 14590 LOCATE  3,10
  1245.       PRINT "41. Drive containing RBBS-PC bulletins is -------- " + DRIVE.FOR.BULLETINS$
  1246. 14600 LOCATE  4,10
  1247.       PRINT "42. Name of file describing 'bulletins' is ------- " + BULLETIN.MENU$
  1248. 14610 LOCATE  5,10
  1249.       PRINT "43. Number of active 'bulletins' -----------------" + STR$(ACTIVE.BULLETINS)
  1250. 14620 LOCATE  6,10
  1251.       PRINT "44. Prefix used to name bulletin files is -------- " + BULLETIN.PREFIX$
  1252. 14630 LOCATE  7,10
  1253.       PRINT "45. Drive containing 'help' files is ------------- " + DRIVE.FOR.HELP.FILES$
  1254. 14640 LOCATE  8,10
  1255.       PRINT "46. Prefix used to name the nine 'help' files ---- " + HELP.FILE.PREFIX$
  1256. 14650 LOCATE  9,10
  1257.       PRINT "47. Name of 'newuser' file shown to new users ---- " + NEWUSER.FILE$
  1258. 14660 LOCATE 10,10
  1259.       PRINT "48. Name of 'welcome' file shown at logon -------- " + WELCOME.FILE$
  1260. 14670 LOCATE 11,10
  1261.       PRINT "49. File directory ext. (name of master directory) " + DIRECTORY.EXTENTION$
  1262. 14680 LOCATE 12,10
  1263.       PRINT "50. The SYSOP's command menu is named ------------ " + MENU$(1)
  1264. 14690 LOCATE 13,10
  1265.       PRINT "51. The main messages subsystem menu is named ---- " + MENU$(2)
  1266. 14700 LOCATE 14,10
  1267.       PRINT "52. The file subsystem menu is named ------------- " + MENU$(3)
  1268. 14710 LOCATE 15,10
  1269.       PRINT "53. The utilities subsystem menu is named -------- " + MENU$(4)
  1270. 14730 LOCATE 16,10
  1271.       PRINT "54. Menu that lists available conferences is ----- " + CONFERENCE.MENU$
  1272. 14740 LOCATE 17,10
  1273.       PRINT "55. File containing invalid user names ----------- " + TRASHCAN.FILE$
  1274. 14742 LOCATE 18,10
  1275.       PRINT "56. Factor to extend session time for uploads ----" + STR$(UPLOAD.TIME.FACTOR!)
  1276. 14744 LOCATE 19,10
  1277.       PRINT "57. Default system type for new callers ---------- " + DEFAULT.MACHINE.TYPE$
  1278. 14745 LOCATE 20,10
  1279.       PRINT "58. Drive available for Uploading ---------------- " + DRIVE.FOR.UPLOADS$
  1280. 14746 LOCATE 21,10
  1281.       PRINT "59. Name of directory for uploading -------------- " + UPLOAD.DIRECTORY$
  1282. 14747 LOCATE 22,10
  1283.       PRINT "60. Drive(s) available for Downloading ----------- " + DRIVES.FOR.DOWNLOADS$
  1284. 14750 GOSUB 24890
  1285. 14760 GOSUB 22160
  1286. 14770 IF IX THEN _
  1287.          ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,14200,15340,14790
  1288. 14780 GOTO 14760
  1289. 14790 GOSUB 50340
  1290. 14800 IF HJ$ = "41" THEN _
  1291.          GOSUB 15160 : _
  1292.          DRIVE.FOR.BULLETINS$ = TB$ : _
  1293.          GOTO 14570
  1294. 14810 IF HJ$ = "42" THEN _
  1295.          GOSUB 14970 : _
  1296.          BULLETIN.MENU$ = HJ$ : _
  1297.          GOTO 14570
  1298. 14820 IF HJ$ = "43" THEN _
  1299.          GOTO 15290
  1300. 14830 IF HJ$ = "44" THEN _
  1301.          GOSUB 14970 : _
  1302.          IF LEN(HJ$) > 6 THEN _
  1303.             HJ$ = "44" : _
  1304.             GOTO 14810 ELSE _
  1305.          BULLETIN.PREFIX$ = HJ$ : _
  1306.          GOTO 14570
  1307. 14840 IF HJ$ = "45" THEN _
  1308.          GOSUB 15160 : _
  1309.          DRIVE.FOR.HELP.FILES$ = HJ$ : _
  1310.          GOTO 14570
  1311. 14850 IF HJ$ = "46" THEN _
  1312.          GOSUB 14970 : _
  1313.          IF LEN(HJ$) > 7 THEN _
  1314.             HJ$ = "44" : _
  1315.             GOTO 14810 ELSE _
  1316.          HELP.FILE.PREFIX$ = HJ$ : _
  1317.          GOTO 14570
  1318. 14860 IF HJ$ = "47" THEN _
  1319.          GOSUB 17330 : _
  1320.          NEWUSER.FILE$ = SJ$ + ":" + HJ$ : _
  1321.          GOTO 14570
  1322. 14870 IF HJ$ = "48" THEN _
  1323.          GOSUB 17330 : _
  1324.          WELCOME.FILE$ = SJ$ + ":" + HJ$ : _
  1325.          GOTO 14570
  1326. 14880 IF HJ$ = "49" THEN _
  1327.          GOSUB 13591 : _
  1328.          DIRECTORY.EXTENTION$ = HJ$ : _
  1329.          GOTO 14570
  1330. 14890 IF HJ$ = "50" THEN _
  1331.          GOSUB 17330 : _
  1332.          MENU$(1) = SJ$ + ":" + HJ$ : _
  1333.          GOTO 14570
  1334. 14900 IF HJ$ = "51" THEN _
  1335.          GOSUB 17330 : _
  1336.          MENU$(2) = SJ$ + ":" + HJ$ : _
  1337.          GOTO 14570
  1338. 14910 IF HJ$ = "52" THEN _
  1339.          GOSUB 17330 : _
  1340.          MENU$(3) = SJ$ + ":" + HJ$ : _
  1341.          GOTO 14570
  1342. 14920 IF HJ$ = "53" THEN _
  1343.          GOSUB 17330 :MENU$(4) = SJ$ + ":" + HJ$ : _
  1344.          GOTO 14570
  1345. 14940 IF HJ$ = "54" THEN _
  1346.          GOSUB 17330 : _
  1347.          CONFERENCE.MENU$ = SJ$ + ":" + HJ$ : _
  1348.          GOTO 14570
  1349. 14950 IF HJ$ = "55" THEN _
  1350.          GOSUB 17330 : _
  1351.          TRASHCAN.FILE$ = SJ$ + ":" + HJ$ : _
  1352.          GOTO 14570
  1353. 14952 IF HJ$ = "56" THEN _
  1354.          GOSUB 15234 : _
  1355.          GOTO 14570
  1356. 14954 IF HJ$ = "57" THEN _
  1357.          GOSUB 15236 : _
  1358.          GOTO 14570
  1359. 14955 IF HJ$ = "58" THEN _
  1360.          A$ = "uploading" :_
  1361.          GOSUB 13253 : _
  1362.          DRIVE.FOR.UPLOADS$ = HJ$ : _
  1363.          IF LEN(UPLOAD.SUBDIR$)>1 THEN _
  1364.             MID$(UPLOAD.SUBDIR$,1,1) = DRIVE.FOR.UPLOADS$ : _
  1365.             GOTO 14570 ELSE _
  1366.          GOTO 14570
  1367. 14956 IF HJ$ = "59" THEN _
  1368.          GOTO 12730
  1369. 14957 IF HJ$ = "60" THEN _
  1370.          GOTO 13470
  1371. 14960 GOTO 14750
  1372. '
  1373. ' *****************************************************************************
  1374. ' * GENERALIZED ROUTINE TO SELECT FILE NAME FOR ANY OPTION WITHIN CONFIG      *
  1375. ' *****************************************************************************
  1376. '
  1377. 14970 X$ = HJ$
  1378. 14980 GOSUB 31060
  1379.       PRINT "Specify name of the file for option " + X$ + ". ";
  1380. 14990 LINE INPUT;HJ$
  1381.       GOSUB 50654
  1382. 15000 IF LEN(HJ$) < 1 OR LEN(HJ$) > 12 THEN _
  1383.          GOTO 14980
  1384. 15010 L1 = INSTR(HJ$,".")
  1385.       IF L1 = 0 THEN _
  1386.          IF LEN(HJ$) < 9 THEN _
  1387.             GOTO 15045 ELSE _
  1388.       GOTO 14980
  1389. 15020 IF L1 > 9 THEN _
  1390.          GOTO 14980
  1391. 15030 IF L1 < 2 THEN _
  1392.          GOTO 14980
  1393. 15040 IF LEN(HJ$)-L1 > 3 THEN _
  1394.          GOTO 14980
  1395. 15045 I = 0
  1396.       GOSUB 25920
  1397.       IF I = 0 THEN _
  1398.          RETURN 
  1399.       GOTO 14980
  1400. 15160 X$ = HJ$
  1401. 15170 LOCATE 24,5
  1402.       PRINT "Specify drive in the range A->" + M$ + " for option " + X$". ";
  1403. 15180 LINE INPUT;HJ$
  1404. 15190 IF LEN(HJ$) <> 1 THEN _
  1405.          GOTO 15170
  1406. 15200 GOSUB 50654
  1407. 15210 IF HJ$ < "A" OR HJ$ > M$ THEN _
  1408.          GOTO 15170
  1409. 15220 TB$ = HJ$
  1410. 15230 RETURN
  1411. '
  1412. ' *****************************************************************************
  1413. ' * ALLOW A SYSOP TO EXTEND A USER'S TIME FOR UPLOADS                         *
  1414. ' *****************************************************************************
  1415. '
  1416. 15234 LOCATE 24,5
  1417.       PRINT "Extend by what fraction of time uploading ";
  1418.       LINE INPUT;HJ$
  1419.       IF VAL(HJ$) < 0 OR VAL(HJ$) > 10 THEN _
  1420.          GOTO 15234
  1421.       UPLOAD.TIME.FACTOR! = VAL(HJ$)
  1422.       RETURN
  1423. '
  1424. ' *****************************************************************************
  1425. ' * ALLOW A DEFAULT SYSTEM TYPE TO EXIT FOR NEW USERS WHEN THEY LOG ON        *
  1426. ' *****************************************************************************
  1427. '
  1428. 15236 LOCATE 24,5
  1429.       PRINT "Enter default system type ";
  1430.       LINE INPUT;DEFAULT.MACHINE.TYPE$
  1431.       IF LEN(DEFAULT.MACHINE.TYPE$) < 2 THEN _
  1432.          GOSUB 50340 : _
  1433.          GOTO 15236
  1434.       RETURN
  1435. '
  1436. ' *****************************************************************************
  1437. ' * REQUEST NUMBER OF SECONDS TO WAIT AFTER INITIALIZING THE MODEM            *
  1438. ' *****************************************************************************
  1439. '
  1440. 15240 LOCATE 24,5                                                    ' CPC14-1C
  1441.       PRINT "How many seconds of delay after modem initilization (1 to 99)?"; ' CPC14-1C
  1442.       LINE INPUT;HJ$                                                 ' CPC14-1C
  1443.       B1 = VAL(HJ$)                                                  ' CPC14-1C
  1444.       IF B1 < 1 OR B1 > 99 THEN _                                    ' CPC14-1C
  1445.          GOTO 15240                                                  ' CPC14-1C
  1446.       MODEM.INIT.WAIT.TIME = B1                                      ' CPC14-1C
  1447.       GOTO 12360                                                     ' CPC14-1C
  1448. '
  1449. ' *****************************************************************************
  1450. ' * REQUEST NUMBER OF SECONDS TO DELAY PRIOR TO ISSUING MODEM COMMANDS        *
  1451. ' *****************************************************************************
  1452. '
  1453. 15250 LOCATE 24,5                                                    ' CPC14-1C
  1454.       PRINT "# seconds to delay prior to issuing modem commands (0 to 99)?"; ' CPC14-1C
  1455.       LINE INPUT;HJ$                                                 ' CPC14-1C
  1456.       B1 = VAL(HJ$)                                                  ' CPC14-1C
  1457.       IF B1 < 0 OR B1 > 99 THEN _                                    ' CPC14-1C
  1458.          GOTO 15250                                                  ' CPC14-1C
  1459.       MODEM.COMMAND.DELAY.TIME = B1                                  ' CPC14-1C
  1460.       GOTO 12360                                                     ' CPC14-1C
  1461. '
  1462. ' *****************************************************************************
  1463. ' * ALLOW THE SYSOP TO SPECIFY THE NUMBER OF ACTIVE BULLETINS                 *
  1464. ' *****************************************************************************
  1465. '
  1466. 15290 LOCATE 24,5
  1467.       PRINT "Enter number of active 'bulletins' (0 to 99)";
  1468. 15300 LINE INPUT;HJ$
  1469. 15310 B1% = VAL(HJ$)
  1470. 15320 IF B1% < 0 OR B1% > 99 THEN _
  1471.          GOTO 15290
  1472. 15330 ACTIVE.BULLETINS = B1%
  1473.       GOTO 14570
  1474. '
  1475. ' *****************************************************************************
  1476. ' *  DISPLAY PARAMETERS FOR DYNAMEIC RBBS-PC FILES                            *
  1477. ' *****************************************************************************
  1478. '
  1479. 15340 DISPLAYED.PAGE.NUMBER = 4
  1480. 15350 GOSUB 24800
  1481. 15360 LOCATE  4,10
  1482.       PRINT "61. System file containing messages is named ----- " + MAIN.MESSAGE.FILE$
  1483. 15380 LOCATE  5,10
  1484.       PRINT "62. System file for 'callers' is named ----------- " + CALLERS.FILE$
  1485. 15390 LOCATE  6,10
  1486.       PRINT "63. System file for comments to SYSOP is named --- " + COMMENTS.FILE$
  1487. 15400 LOCATE  7,10
  1488.       PRINT "64. System file for recording users is named ----- " + MAIN.USER.FILE$
  1489. 15405 LOCATE  8,10
  1490.       PRINT "65. Extended logging to 'callers' file ----------- " + EXTENDED.LOGGING$
  1491. 15406 LOCATE  9,10
  1492.       PRINT"66. Record comments as private messages ---------- "+COMMENTS.AS.MESSAGES$
  1493.       LOCATE 10,10                                                   ' CPC14-1C
  1494.       PRINT"67. Use machine language routines for speed ------ "+TURBO.RBBS$ ' CPC14-1C
  1495. 15410 GOSUB 24890
  1496. 15420 GOSUB 22160
  1497. 15430 IF IX THEN _
  1498.          ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,14570,16130,15450
  1499. 15440 GOTO 15420
  1500. 15450 GOSUB 50340
  1501. 15460 IF HJ$ = "61" THEN _
  1502.          GOSUB 17330 : _
  1503.          GOTO 15511
  1504. 15480 IF HJ$ = "62" THEN _
  1505.          GOSUB 17330 : _
  1506.          CALLERS.FILE$ = SJ$ + ":" + HJ$ : _
  1507.          GOTO 15340
  1508. 15490 IF HJ$ = "63" THEN _
  1509.          GOSUB 17330 : _
  1510.          COMMENTS.FILE$ = SJ$ + ":" + HJ$ : _
  1511.          GOTO 15340
  1512. 15500 IF HJ$ = "64" THEN _
  1513.          GOSUB 17330 : _
  1514.          GOTO 15512 
  1515. 15505 IF HJ$ = "65" THEN _
  1516.          GOTO 15991
  1517. 15506 IF HJ$ = "66" THEN _
  1518.          GOTO 15993
  1519.       IF HJ$ = "67" THEN _                                           ' CPC14-1C
  1520.          GOTO 15820                                                  ' CPC14-1C
  1521. 15510 GOTO 15410
  1522. 15511 IF LEN(HJ$) > 8 OR INSTR(HJ$,".") THEN _
  1523.          HJ$ = "61" : _
  1524.          GOTO 15460 ELSE _
  1525.          MAIN.MESSAGE.FILE$ = SJ$ + ":" + HJ$ : _
  1526.          MAIN.MESSAGE.BACKUP$ = MAIN.MESSAGE.FILE$ + ".BAK" : _
  1527.          MAINMSG$ = MAIN.MESSAGE.FILE$ : _
  1528.          GOTO 15340
  1529. 15512 IF LEN(HJ$) > 8 OR INSTR(HJ$,".") THEN _
  1530.          HJ$ = "64" : _
  1531.          GOTO 15500 ELSE _
  1532.          MAIN.USER.FILE$ = SJ$ + ":" + HJ$ : _
  1533.          MAINUSR$ = MAIN.USER.FILE$ : _
  1534.          GOTO 15340
  1535. 15520 LOCATE 24,5
  1536.       PRINT "(See the description of the COLOR statement in Basic.)";
  1537.       RETURN
  1538. '
  1539. ' *****************************************************************************
  1540. ' * ALLOW A SYSOP TO SPECIFY THE FOREGROUND COLOR FOR THE LOCAL COLOR MONITOR *
  1541. ' *****************************************************************************
  1542. '
  1543. 15530 LOCATE 25,5
  1544.       PRINT "Enter foreground color (a value between 0 and 15)";
  1545. 15540 LINE INPUT;HJ$
  1546. 15550 B1 = VAL(HJ$)
  1547. 15560 IF B1 < 0 OR B1 > 15 THEN _
  1548.          GOTO 15530
  1549. 15570 FG = B1
  1550. 15580 GOTO 14200
  1551. '
  1552. ' *****************************************************************************
  1553. ' * ALLOW A SYSOP TO SPECIFY THE BACKGROUND COLOR FOR THE LOCAL COLOR MONITOR *
  1554. ' *****************************************************************************
  1555. '
  1556. 15590 LOCATE 25,5
  1557.       PRINT "Enter background color (a value between 0 and 7)";
  1558. 15600 LINE INPUT;HJ$
  1559. 15610 B1 = VAL(HJ$)
  1560. 15620 IF B1 < 0 OR B1 > 7 THEN _
  1561.          GOTO 15590
  1562. 15630 BG = B1
  1563. 15640 GOTO 14200
  1564. '
  1565. ' *****************************************************************************
  1566. ' * ALLOW A SYSOP TO SPECIFY THE BORDER COLOR THE LOCAL COLOR MONITOR         *
  1567. ' *****************************************************************************
  1568. '
  1569. 15650 LOCATE 25,5
  1570.       PRINT "Enter the border color (a value between 0 and 7)";
  1571. 15660 LINE INPUT;HJ$
  1572. 15670 B1 = VAL(HJ$)
  1573. 15680 IF B1 < 0 OR B1 > 7 THEN _
  1574.          GOTO 15650
  1575. 15690 BORDER = B1
  1576. 15700 GOTO 14200
  1577. '
  1578. ' *****************************************************************************
  1579. ' * SHOULD THE LOCAL MODEM'S SPEAKER BE ON OR OFF?                            *
  1580. ' *****************************************************************************
  1581. '
  1582. 15710 LOCATE 24,5
  1583.       PRINT "Modem speaker default? (ON or OFF) ";
  1584. 15720 LINE INPUT;HJ$
  1585. 15730 IF LEN(HJ$) < 1 OR LEN(HJ$) > 3 THEN _
  1586.          GOTO 15710
  1587. 15740 GOSUB 50654
  1588. 15750 IF HJ$ = "ON"  THEN _
  1589.          GOTO 15780
  1590. 15760 IF HJ$ = "OFF" THEN _
  1591.          GOTO 15780
  1592. 15770 GOTO 15710
  1593. 15780 M14$ = HJ$
  1594. 15790 GOTO 14200
  1595. '
  1596. ' *****************************************************************************
  1597. ' * SHOULD USERS BE REMINDED OF THE MESSAGES THAT THEY LEFT?                  *
  1598. ' *****************************************************************************
  1599. '
  1600. 15800 XX$ = "Remind users of the messages they left? (YES or NO) "
  1601.       GOSUB 50345
  1602.       GOSUB 22380
  1603.       ON AB GOTO 15810,15810,15800,15800
  1604. 15810 MESSAGE.REMINDER$ = HJ$
  1605.       GOTO 14200
  1606. '
  1607. ' *****************************************************************************
  1608. ' * SHOULD MACHINE LANGUAGE ROUTINES BE USED TO INCREASE SPEED?               *
  1609. ' *****************************************************************************
  1610. '
  1611. 15820 XX$ = "Use machine language routines for speed? (YES or NO) "  ' CPC14-1C
  1612.       GOSUB 50345                                                    ' CPC14-1C
  1613.       GOSUB 22380                                                    ' CPC14-1C
  1614.       ON AB GOTO 15830,15830,15800,15800                             ' CPC14-1C
  1615. 15830 TURBO.RBBS$ = HJ$                                              ' CPC14-1C
  1616.       GOTO 15340                                                     ' CPC14-1C
  1617. '
  1618. ' *****************************************************************************
  1619. ' * IS THE USER ALLOWED TO BYPASS THE SYSTEM BULLETINS?                       *
  1620. ' *****************************************************************************
  1621. '
  1622. 15840 XX$ = "Are system bulletins to be optional? (YES or NO) "
  1623.       GOSUB 50345
  1624.       GOSUB 22380
  1625.       ON AB GOTO 15860,15860,15840,15840
  1626. 15860 BULLETINS.OPTIONAL$ = HJ$
  1627.       GOTO 14200
  1628. '
  1629. ' *****************************************************************************
  1630. ' * SHOULD USER'S BE PREVENTED FROM DOWNLOADING FILES IN ASCII?               *
  1631. ' *****************************************************************************
  1632. '
  1633. 15880 XX$ = "Is non-ascii protocol required for binary files? (YES or NO) "
  1634.       GOSUB 50345
  1635.       GOSUB 22380
  1636.       ON AB GOTO 15900,15900,15880,15880
  1637. 15900 REQUIRE.NON.ASCII$ = HJ$
  1638.       GOTO 14200
  1639. '
  1640. ' *****************************************************************************
  1641. ' * IS MICROCOM'S MNP PROTOCOL TO BE MADE AVAILABLE?                          *
  1642. ' *****************************************************************************
  1643. '
  1644. 15911 XX$ = "Enable MICROCOM's MNP protocol? (YES or NO) "
  1645.       GOSUB 50345
  1646.       GOSUB 22380
  1647.       ON AB GOTO 15913,15913,15911,15911
  1648. 15913 MNP.SUPPORT$ = HJ$
  1649.       GOTO 14200
  1650. '
  1651. ' *****************************************************************************
  1652. ' * SHOULD THE MAIN DIRECTORY (TEXT FILE) BE OMITTED FROM THE "NEW" COMMAND?  *
  1653. ' *****************************************************************************
  1654. '
  1655. 15920 XX$ = "Is " + DIRECTORY.EXTENTION$ + " omitted from the N)ew command? (YES or NO) "
  1656.       GOSUB 50345
  1657.       GOSUB 22380
  1658.       ON AB GOTO 15940,15940,15920,15920
  1659. 15940 OMIT.MAIN.DIRECTORY$ = HJ$
  1660.       GOTO 14200
  1661. '
  1662. ' *****************************************************************************
  1663. ' * SHOULD THE UPLOAD DIRECTORY (TEXT FILE) BE OMITTED FROM THE "NEW" COMMAND?*
  1664. ' *****************************************************************************
  1665. '
  1666. 15960 XX$ = "Is " + UPLOAD.DIRECTORY$ + " omitted from the N)ew command? (YES or NO) "
  1667.       GOSUB 50345
  1668.       GOSUB 22380
  1669.       ON AB GOTO 15980,15980,15960,15960
  1670. 15980 OMIT.UPLOAD.DIRECTORY$ = HJ$
  1671.       GOTO 14200
  1672. '
  1673. ' *****************************************************************************
  1674. ' * IS "EXTENDED" LOGGING TO THE CALLERS FILE TO BE ACTIVATED?                *
  1675. ' *****************************************************************************
  1676. '
  1677. 15991 LOCATE 24,5
  1678.       PRINT "Do you want EXTENDED logging to the 'callers' file (YES OR NO) ";
  1679.       GOSUB 22380
  1680.       ON AB GOTO 15992,15992,15991,15991
  1681. 15992 EXTENDED.LOGGING$ = HJ$
  1682.       GOTO 15340
  1683. '
  1684. ' *****************************************************************************
  1685. ' * ARE COMMENTS TO BE RECORDED AS PRIVATE MESSAGES IN THE MESSAGE FILE?      *
  1686. ' *****************************************************************************
  1687. '
  1688. 15993 LOCATE 24,5
  1689.       PRINT"Do you want 'comments' recorded as private messages (YES OR NO) ";
  1690.       GOSUB 22380
  1691.       ON AB GOTO 15994,15994,15993,15993
  1692. 15994 COMMENTS.AS.MESSAGES$ = HJ$
  1693.       GOTO 15340
  1694. '
  1695. ' *****************************************************************************
  1696. ' * CAN THE USER INTERRUPT THE "WELCOME" FILE DISPLAY WHEN HE LOGS ON?        *
  1697. ' *****************************************************************************
  1698. '
  1699. 16000 LOCATE 24,5
  1700.       PRINT "Is system 'welcome' interruptable (YES OR NO) ";
  1701. 16010 GOSUB 22380
  1702.       ON AB GOTO 16020,16020,16000,16000
  1703. 16020 WELCOME.INTERRUPTABLE$ = HJ$
  1704.       GOTO 14200
  1705. '
  1706. ' *****************************************************************************
  1707. ' * HOW MANY SECONDS SHOULD USERS BE ALLOWED TO BE IDLE BEFORE LOGGING HIM OFF*
  1708. ' *****************************************************************************
  1709. '
  1710. 16031 LOCATE 24,5
  1711.       PRINT "Seconds users can be idle before being logged off";
  1712. 16032 LINE INPUT;HJ$
  1713. 16033 WAIT.BEFORE.DISCONNECT = VAL(HJ$)
  1714. 16034 IF WAIT.BEFORE.DISCONNECT < 1 OR WAIT.BEFORE.DISCONNECT > 32400 THEN _
  1715.          GOTO 16031
  1716. 16035 GOTO 14200
  1717. '
  1718. ' *****************************************************************************
  1719. ' * IDENTIFY THE TYPE OF PC THAT RBBS-PC WILL BE RUNNING ON                                                                          *
  1720. ' *****************************************************************************
  1721. '
  1722. 16040 CLS
  1723.       LOCATE 5,5
  1724.       PRINT "Please select the type of PC which RBBS-PC will be running on  :"
  1725.       LOCATE 7,10
  1726.       PRINT "0.   IBM PC, IBM XT, or IBM AT"
  1727.       LOCATE 9,10
  1728.       PRINT "1.   Compaq/Plus or compatable that uses interrupt 7F"
  1729.       LOCATE 11,10
  1730.       PRINT "2.   IBM PCjr
  1731. 16045 LOCATE 13,10
  1732.       PRINT "3.   Other compatable under IBM's DOS (i.e. PC-DOS)
  1733. 16050 GOSUB 50340
  1734.       LOCATE 24,5
  1735.       PRINT "Select environment (0 to 3, CR to end)";
  1736.       LINE INPUT;X$
  1737.       IF X$ = "" THEN _
  1738.          GOTO 14200
  1739.       COMPUTER.TYPE = VAL(X$)
  1740.       GOSUB 16060
  1741.       IF COMPUTER.TYPE = 2 THEN _
  1742.          GOTO 16071
  1743.       GOTO 14200
  1744. 16060 IF COMPUTER.TYPE < 0 OR COMPUTER.TYPE > 3 THEN _
  1745.          GOTO 16050
  1746. 16062 IF COMPUTER.TYPE = 0 THEN _
  1747.          COMPUTER.TYPE$ = "IBM PC, XT, or AT
  1748. 16064 IF COMPUTER.TYPE = 1 THEN _
  1749.          COMPUTER.TYPE$ = "Compaq/Plus
  1750. 16066 IF COMPUTER.TYPE = 2 THEN _
  1751.          COMPUTER.TYPE$ = "PCjr
  1752. 16068 IF COMPUTER.TYPE = 3 THEN _
  1753.          COMPUTER.TYPE$ = "Other under PC-DOS
  1754. 16070 RETURN
  1755. 16071 PCJR = 0
  1756.       XX$ = "Is an IBM PCjr Internal Modem installed? (YES or NO)"
  1757.       GOSUB 50345
  1758.       GOSUB 22380
  1759.       ON AB GOTO 16072,14200,16071,16071
  1760. 16072 PCJR = 1
  1761.       GOTO 14200
  1762. '
  1763. ' *****************************************************************************
  1764. ' * CAN MODEM COMMANDS BE ISSUED EVEN WHEN THE MODEM IS RINGING?              *
  1765. ' *****************************************************************************
  1766. '
  1767. 16121 LOCATE 24,5
  1768.       PRINT "Wait to issue modem commands between rings? (YES OR NO) ";
  1769. 16122 GOSUB 22380
  1770.       ON AB GOTO 16123,16123,16121,16121
  1771. 16123 COMMANDS.BETWEEN.RINGS$ = HJ$
  1772.       GOTO 14200
  1773. '
  1774. ' *****************************************************************************
  1775. ' * WHAT BAUD RATE SHOULDT RBBS-PC INITIALLY OPEN THE MODEM AT?               *
  1776. ' *****************************************************************************
  1777. '
  1778. 16124 LOCATE 25,5
  1779.       PRINT "Enter baud rate (300, 1200, 2400, 4800, 9600) to open modem at ";
  1780. 16125 LINE INPUT;HJ$
  1781. 16126 B1 = VAL(HJ$)
  1782. 16127 IF B1 = 300 OR B1 = 1200 OR B1 = 2400 OR B1 = 4800 OR B1 = 9600 THEN _
  1783.          GOTO 16128 ELSE _
  1784.       GOTO 16124
  1785. 16128 MODEM.INIT.BAUD$ = MID$(STR$(B1),2)
  1786. 16129 GOTO 14200
  1787. '
  1788. ' *****************************************************************************
  1789. ' *  DISPLAY THE PARAMETERS FOR RBBS-PC'S "DOORS"                             *
  1790. ' *****************************************************************************
  1791. '
  1792. 16130 DISPLAYED.PAGE.NUMBER = 5
  1793. 16140 GOSUB 24800
  1794. 16150 LOCATE  3,10
  1795.       PRINT "81. Is the 'door' subystem available? ------------ " + DOORS.AVAILABLE$
  1796. 16160 LOCATE  4,10
  1797.       PRINT "82. The 'door' subsystem menu is named ----------- " + MENU$(5)
  1798. 16170 LOCATE  5,10
  1799.       PRINT "83. File RBBS builds dynamically to open a 'door'- " + RCTTY.BAT$
  1800. 16180 LOCATE  6,10
  1801.       PRINT "84. When a 'door' closes, file to re-invoke RBBS - " + RBBS.BAT$
  1802. 16185 LOCATE  7,10
  1803.       PRINT "85. Drive to look for COMMAND.COM on ------------- " + DISK.FOR.DOS$
  1804. 16190 GOSUB 24890
  1805. 16200 GOSUB 22160
  1806. 16210 IF IX THEN _
  1807.          ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,15340,16910,16230
  1808. 16220 GOTO 16200
  1809. 16230 GOSUB 50340
  1810. 16240 IF HJ$ = "81" THEN _
  1811.          GOTO 16290
  1812. 16250 IF HJ$ = "82" THEN _
  1813.          GOSUB 17330 : _
  1814.          MENU$(5) = SJ$ + ":" + HJ$ : _
  1815.          GOTO 16130
  1816. 16260 IF HJ$ = "83" THEN _
  1817.          GOSUB 17330 : _
  1818.          RCTTY.BAT$ = SJ$ + ":" + HJ$ : _
  1819.          GOTO 16130
  1820. 16270 IF HJ$ = "84" THEN _
  1821.          GOSUB 17330 : _
  1822.          RBBS.BAT$ = SJ$ + ":" + HJ$ : _
  1823.          GOTO 16130
  1824. 16275 IF HJ$ = "85" THEN _
  1825.          A$ = "COMMAND.COM" : _
  1826.          GOSUB 13253 : _
  1827.          DISK.FOR.DOS$ = HJ$ + ":" : _
  1828.          GOTO 16130
  1829. '
  1830. ' *****************************************************************************
  1831. ' * SHOULD "DOORS" BE AVAILABLE?                                              *
  1832. ' *****************************************************************************
  1833. '
  1834. 16280 GOTO 16190
  1835. 16290 XX$ = "Is the 'door' subsystem available? (YES or NO) "
  1836.       GOSUB 50345
  1837.       GOSUB 22380
  1838.       ON AB GOTO 16310,16310,16290,16290
  1839. 16310 DOORS.AVAILABLE$ = HJ$
  1840. 16320 IF DOORS.AVAILABLE$ = "NO" THEN _
  1841.          GOTO 16130
  1842.       GOSUB 50340 
  1843.       LOCATE 24,1
  1844.       PRINT "Will you be running RBBS-PC under MultiLink from The Software Link? ";
  1845. 16330 GOSUB 22380
  1846.       ON AB GOTO  16340,16350,16290,16290
  1847. 16340 DELAY! = FNTI! + 15
  1848.       GOSUB 16470
  1849.       GOTO 16130
  1850. 16350 GOSUB 16380
  1851.       GOTO 16360
  1852. 16360 LOCATE 23,1
  1853.       PRINT "Current Multi-Link terminal type for DOORS is ";DOORS.TERMINAL.TYPE
  1854. 16370 GOSUB 50340
  1855.       LOCATE 24,1
  1856.       PRINT "Enter Multi-Link terminal type for DOORS ";
  1857.       GOSUB 17420
  1858.       DOORS.TERMINAL.TYPE = B1
  1859.       IF DOORS.TERMINAL.TYPE < 0 THEN _                              ' CPC14-1C
  1860.          GOTO 16370
  1861.       IF DOORS.TERMINAL.TYPE > 12 THEN _
  1862.          GOTO 16370
  1863.       GOTO 16130
  1864. 16380 CLS
  1865. '
  1866. ' *****************************************************************************
  1867. ' * NOTIFY THE SYSOP OF THE CONDITIONS FOR USING RBBS-PC UNDER MULTI-LINK     *
  1868. ' *****************************************************************************
  1869. '
  1870.       PRINT "Multi-Link is a software product of The Software Link, Inc. located"
  1871.       PRINT "at 6700 23-B Roswell Road, Atlanta, Georgia  30328.  It allows IBM's"
  1872.       PRINT "DOS 1.1, 2.x, or 3.x on the IBM PC to become a multi-tasking operating"
  1873. 16400 PRINT "system.  The Capital PC User Group has no connection whatsoever with"
  1874. 16410 PRINT "this company or it's products.  In fact The Software Link has only"
  1875.       PRINT "occasionally sent updates of it's new releases to us.  RBBS-PC has" 
  1876.       PRINT "only been tested under Release 3.02 of MultiLink and earlier versions
  1877. 16420 PRINT "of MultiLink.  I feel strongly that IBM's DOS for the PC should be"
  1878.       PRINT "multi-tasking.  Because MultiLink provides this capability for the widest
  1879. 16430 PRINT "ranges of DOS software for the IBM PC, RBBS-PC has been enhanced"
  1880.       PRINT "to run under Multi-Link.  Any questions regarding RBBS-PC under Multi-Link"
  1881.       PRINT "(other than Release 3.02 of Multi-Link) should be directed to The
  1882. 16440 PRINT "Software Link's customer support group at (404) 998-0788."
  1883.       PRINT ""
  1884.       PRINT "I have run RBBS-PC under Multi-Link since December 1983 -- since Multi-Link"
  1885.       PRINT "release 2.04.  Since Multi-Link release 2.06 I HAVE NEVER HAD A SYSTEM CRASH
  1886. 16450 PRINT "due to Multi-Link.  I think it is a quality product but a bit over-priced."
  1887.       PRINT "My opnion on Multi-Link's price reflects my prejudice that all PC software"
  1888.       PRINT "should be relatively inexpensive."
  1889.       PRINT ""
  1890.       PRINT SPC(60);"Tom Mack
  1891. 16460 PRINT SPC(60);"May, 25, 1986"
  1892.       RETURN
  1893. '
  1894. ' *****************************************************************************
  1895. ' * NOTIFY THE SYSOP OF THE CONDITIONS FOR USING RBBS-PC "DOORS"              *
  1896. ' *****************************************************************************
  1897. '
  1898. 16470 CLS
  1899.       PRINT "                ******Warning******"
  1900.       PRINT "IBM's DOS absolutely REQUIRES any software package running"
  1901.       PRINT "as a 'door' (i.e. via a communication port) to monitor the"
  1902.       PRINT "communication port!  Unless the software that you invoke via
  1903. 16480 PRINT "the RBBS-PC 'door' mechanism monitors the communication line,"
  1904.       PRINT "your system will be vulnerable to being hung -- and worse!!!"
  1905.       PRINT "If you don't THROUGHLY understand section 11.0 of RBBS-PC's
  1906. 16490 PRINT "documentation which discusses the pitfalls of opening RBBS-PC's"
  1907.       PRINT "'doors' to your users, DON'T use 'doors'!!!!!
  1908. 16640 IF FNTI! < DELAY! THEN _
  1909.          GOTO 16640 ELSE _
  1910.       RETURN
  1911. '
  1912. ' *****************************************************************************
  1913. ' * SHOULD USERS BE LIMITED TO A MAXIMUM AMOUNT OF TIME ON THE SYSTEM EACH DAY*
  1914. ' *****************************************************************************
  1915. '
  1916. 16650 XX$ = "Limit the maximum time a users can be on each day? (YES or NO) "
  1917.       GOSUB 50345
  1918.       GOSUB 22380
  1919.       ON AB GOTO 16670,16670,16650,16650
  1920. 16670 LIMIT.DAILY.TIME$ = HJ$
  1921.       GOTO 12360
  1922. '
  1923. ' *****************************************************************************
  1924. ' * SHOULD USERS BE REMINDED OF THE NUMBER FILE TRANSFERS THAT THEY HAVE DONE?*
  1925. ' *****************************************************************************
  1926. '
  1927. 16690 XX$ = "Remind users of # uploads and downloads? (YES or NO) "
  1928.       GOSUB 50345
  1929.       GOSUB 22380
  1930.       ON AB GOTO 16710,16710,16690,16690
  1931. 16710 REMIND.FILE.TRANSFERS$ = HJ$
  1932.       GOTO 14200
  1933. '
  1934. ' *****************************************************************************
  1935. ' * SHOULD USERS BE REMINDED OF THEIR TERMINAL'S PROVILE?                     *
  1936. ' *****************************************************************************
  1937. '
  1938. 16722 XX$ = "Remind users of their terminal's profile? (YES or NO) "
  1939.       GOSUB 50345
  1940.       GOSUB 22380
  1941.       ON AB GOTO 16724,16724,16722,16722
  1942. 16724 REMIND.PROFILE$ = HJ$
  1943.       GOTO 14200
  1944. '
  1945. ' *****************************************************************************
  1946. ' * ALLOW THE SYSOP TO SELECT "DUMB" MODEM (BUT WITH AUTO-ANSWER) MODE        *
  1947. ' *****************************************************************************
  1948. '
  1949. 16725 XX$ = "Are you using a non-Hayes auto-answer only modem? (YES or NO) "
  1950.       GOSUB 50345
  1951.       GOSUB 22380
  1952.       ON AB GOTO 16726,16726,16725,16725
  1953. 16726 DUMB.MODEM$ = HJ$
  1954.       GOTO 14200
  1955. '
  1956. ' *****************************************************************************
  1957. ' * SELECT A DEFAULT USER'S PAGE LENGTH                                       *
  1958. ' *****************************************************************************
  1959. '
  1960. 16730 LOCATE 24,5
  1961.       PRINT "Default user page length?(a value between 0 and 255)";
  1962. 16740 LINE INPUT;HJ$
  1963. 16750 B1 = VAL(HJ$)
  1964. 16760 IF B1 < 0 OR B1 > 255 THEN _
  1965.          GOTO 16730
  1966. 16770 PAGE.LENGTH = B1
  1967. 16780 GOTO 14200
  1968. '
  1969. ' *****************************************************************************
  1970. ' * SPECIFY THE MAXIMUM NUMBER OF LINES ALLOWED PER MESSAGE                   *
  1971. ' *****************************************************************************
  1972. '
  1973. 16790 LOCATE 24,5
  1974.       PRINT "Maximum number of lines allowed per message (1->99)";
  1975. 16800 LINE INPUT;HJ$
  1976. 16810 B1 = VAL(HJ$)
  1977. 16820 IF B1 < 1 OR B1 > 99 THEN _
  1978.          GOTO 16790
  1979. 16830 MAX.MESSAGE.LINES = B1
  1980. 16840 GOTO 14200
  1981. '
  1982. ' *****************************************************************************
  1983. ' * SECURITY LEVEL TO TEMPORARILY IMPOSE ON CONFERENCE VIEWERS                *
  1984. ' *****************************************************************************
  1985. '
  1986. 16850 LOCATE 24,5
  1987.       PRINT "Security level temporarily imposed on conference 'viewers'";
  1988. 16860 HJ$ = "V>iew
  1989. 16870 GOSUB 17420
  1990.       CONFERENCE.VIEWER.SEC.LVL = B1
  1991. 16900 GOTO 16910
  1992. '
  1993. ' *****************************************************************************
  1994. ' *  DISPLAY THE PARAMETERS FOR RBBS-PC'S SECURITY SYSTEM                     *
  1995. ' *****************************************************************************
  1996. '
  1997. 16910 DISPLAYED.PAGE.NUMBER = 6
  1998. 16920 GOSUB 24800
  1999. 16930 LOCATE  3,9
  2000.       PRINT "101. Minimum security level to get onto RBBS ------ "STR$(MINIMUM.LOGON.SECURITY)
  2001. 16940 LOCATE  4,9
  2002.       PRINT "102. Default security level for new callers ------- "STR$(DEFAULT.SECURITY.LEVEL)
  2003. 16950 LOCATE  5,9
  2004.       PRINT "103. Security level for SYSOP --------------------- "STR$(SYSOP.SECURITY.LEVEL)
  2005. 16960 LOCATE  6,9
  2006.       PRINT "104. Files with download security are listed in ---  " + FILESEC.FILE$
  2007. 16970 LOCATE  7,9
  2008.       PRINT "105. Minimum security level to see SYSOP's menu --- "STR$(SYSOP.MENU.SECURITY.LEVEL)
  2009. 16980 LOCATE  8,9
  2010.       PRINT "106. Minimum security level to use RBBS-PC 'doors'  " + STR$(DOORS.SECURITY.LEVEL)
  2011. 16990 LOCATE  9,9
  2012.       PRINT "107. Max # security violations before disconnect -- "STR$(MAXIMUM.VIOLATIONS)
  2013. 17000 M22$ = STR$(SF)
  2014.       IX = SYSOP.FUNCTION(1)
  2015.       FOR I = 2 TO 7
  2016.         IF IX <> SYSOP.FUNCTION(I) THEN _
  2017.            M22$ = "(Variable)" : _
  2018.            GOTO 17010 ELSE _
  2019.       NEXT
  2020. 17010 LOCATE 10,9
  2021.       PRINT "108. Security level for SYSOP functions ----------- "M22$
  2022. 17020 M23$ = STR$(MM)
  2023.       IX = MAIN.FUNCTION(1)
  2024.       FOR I = 2 TO 21
  2025.         IF IX<>MAIN.FUNCTION(I) THEN _
  2026.            M23$ = "(Variable)" : _
  2027.            GOTO 17030 ELSE _
  2028.       NEXT
  2029. 17030 LOCATE 11,9
  2030.       PRINT "109. Security level for main menu functions ------- "M23$
  2031. 17040 M24$ = STR$(FC)
  2032.       IX = FILES.FUNCTION(1)
  2033.       FOR I = 2 TO 10
  2034.         IF IX<>FILES.FUNCTION(I) THEN _
  2035.            M24$ = "(Variable)" : _
  2036.            GOTO 17050 ELSE _
  2037.       NEXT
  2038. 17050 LOCATE 12,9
  2039.       PRINT "110. Security level for file menu functions ------- "M24$
  2040. 17060 M25$ = STR$(UE)
  2041.       IX = UTILITY.FUNCTION(1)
  2042.       FOR I = 2 TO 16
  2043.         IF IX<>UTILITY.FUNCTION(I) THEN _
  2044.            M25$ = "(Variable)" : _
  2045.            GOTO 17070 ELSE _
  2046.       NEXT
  2047. 17070 LOCATE 13,9
  2048.       PRINT "111. Security level for utilities menu functions -- "M25$
  2049. 17080 LOCATE 14,9
  2050.       PRINT "112. File with privileged group passwords is named-  "PASSWORD.FILE$
  2051. 17090 LOCATE 15,9
  2052.       PRINT "113. Max # of password changes in a session ------- "STR$(MAXIMUM.PASSWORD.CHANGES)
  2053. 17100 LOCATE 16,9
  2054.       PRINT "114. Min. security level for temp. password changes "STR$(MINIMUM.SECURITY.FOR.TEMP.PASSWORD)
  2055. 17110 LOCATE 17,9
  2056.       PRINT "115. Min. security level to overwrite on uploads -- "STR$(OVERWRITE.SECURITY.LEVEL)
  2057. 17115 LOCATE 18,9
  2058.       PRINT "116. Security level of conference 'viewers' ------- "STR$(CONFERENCE.VIEWER.SEC.LVL)
  2059. 17116 LOCATE 19,9
  2060.       PRINT "117. User's security exempted from 'packing' ------ "STR$(SEC.LVL.EXEMPT.FRM.PURGING)
  2061. 17120 GOSUB 24890
  2062. 17130 GOSUB 22160
  2063. 17140 IF IX THEN _
  2064.          ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,16130,21550,17160
  2065. 17150 GOTO 17130
  2066. 17160 GOSUB 50340
  2067. 17170 IF HJ$ = "101" THEN _
  2068.          GOSUB 18730 : _
  2069.          GOSUB 17410 : _
  2070.          MINIMUM.LOGON.SECURITY = B1 : _
  2071.          GOTO 16910
  2072. 17180 IF HJ$ = "102" THEN _
  2073.          GOSUB 18730 : _
  2074.          GOSUB 17410 : _
  2075.          DEFAULT.SECURITY.LEVEL = B1 : _
  2076.          GOTO 16910
  2077. 17190 IF HJ$ = "103" THEN _
  2078.          GOSUB 18730 : _
  2079.          GOSUB 17410 : _
  2080.          SYSOP.SECURITY.LEVEL = B1 : _
  2081.          GOTO 16910
  2082. 17200 IF HJ$ = "104" THEN _
  2083.          GOSUB 17330 : _
  2084.          FILESEC.FILE$ = SJ$ + ":" + HJ$ : _
  2085.          GOTO 16910
  2086. 17210 IF HJ$ = "105" THEN _
  2087.          GOSUB 18730 : _
  2088.          GOSUB 17410 : _
  2089.          SYSOP.MENU.SECURITY.LEVEL = B1 : _
  2090.          GOTO 16910
  2091. 17220 IF HJ$ = "106" THEN _
  2092.          GOSUB 18730 : _
  2093.          GOSUB 17410 : _
  2094.          DOORS.SECURITY.LEVEL = B1 : _
  2095.          GOTO 16910
  2096. 17230 IF HJ$ = "107" THEN _
  2097.          GOSUB 18730 : _
  2098.          GOSUB 17410 : _
  2099.          MAXIMUM.VIOLATIONS = B1 : _
  2100.          GOTO 16910
  2101. 17240 IF HJ$ = "108" THEN _
  2102.          GOTO 17460 
  2103. 17250 IF HJ$ = "109" THEN _
  2104.          GOSUB 17460 : _
  2105.          MM = B1 : _
  2106.          GOTO 16910
  2107. 17260 IF HJ$ = "110" THEN _
  2108.          GOSUB 17460 : _
  2109.          FC = B1 : _
  2110.          GOTO 16910
  2111. 17270 IF HJ$ = "111" THEN _
  2112.          GOSUB 17460 : _
  2113.          UE = B1 : _
  2114.          GOTO 16910
  2115. 17280 IF HJ$ = "112" THEN _
  2116.          GOSUB 17330 :_
  2117.          PASSWORD.FILE$ = SJ$ + ":" + HJ$ :_
  2118.          GOTO 16910
  2119. 17290 IF HJ$ = "113" THEN _
  2120.          GOSUB 50340 : _
  2121.          LOCATE 24,1 : _
  2122.          PRINT "Maximum number of password changes is? (0 or more)"; : _
  2123.          GOSUB 17420 : _
  2124.          MAXIMUM.PASSWORD.CHANGES = B1 : _
  2125.          IF B1 < 0 THEN _
  2126.             GOTO 17290 ELSE _
  2127.          GOTO 16910
  2128. 17300 IF HJ$ = "114" THEN _
  2129.          GOSUB 18730 : _
  2130.          GOSUB 17410 : _
  2131.          MINIMUM.SECURITY.FOR.TEMP.PASSWORD = B1 : _
  2132.          GOTO 16910
  2133. 17310 IF HJ$ = "115" THEN _
  2134.          HJ$ = "overwriting files on upload" : _
  2135.          GOSUB 17410 : _
  2136.          OVERWRITE.SECURITY.LEVEL = B1 : _
  2137.          GOTO 16910
  2138. 17315 IF HJ$ = "116" THEN _
  2139.          GOTO 16850
  2140. 17316 IF HJ$ = "117" THEN _
  2141.          GOSUB 18730 : _
  2142.          GOSUB 17410 : _
  2143.          SEC.LVL.EXEMPT.FRM.PURGING = B1 : _
  2144.          GOTO 16910
  2145. 17320 GOTO 17120
  2146. '
  2147. ' *****************************************************************************
  2148. ' *  STANDARD ROUTINE TO SIMPLY SPECIFY A DRIVE LETTER FOR ANY OPTION         *
  2149. ' *****************************************************************************
  2150. '
  2151. 17330 X$ = HJ$
  2152.       LOCATE 24,5
  2153.       PRINT "Specify drive (A->" + M$ + ") where file for option " + X$ + " will be located. ";
  2154. 17340 LINE INPUT;HJ$
  2155. 17350 IF LEN(HJ$) <> 1 THEN _
  2156.          HJ$ = X$ : _
  2157.          GOTO 17330
  2158. 17360 GOSUB 50654
  2159. 17370 IF HJ$<"A" OR HJ$>M$ THEN _
  2160.          HJ$ = X$ : _
  2161.          GOTO 17330
  2162. 17380 SJ$ = HJ$
  2163. 17390 GOSUB 14980
  2164. 17400 RETURN
  2165. '
  2166. ' *****************************************************************************
  2167. ' * STANDARD ROUTINE TO REQUEST A SECURITY LEVEL FOR A SPECIFIC COMMAND       *
  2168. ' *****************************************************************************
  2169. '
  2170. 17410 GOSUB 50340
  2171.       LOCATE 24,1
  2172.       PRINT "Security level for " + HJ$ + " is? ";
  2173. 17420 LINE INPUT;HK$
  2174. 17430 B1 = VAL(HK$)
  2175. 17440 IF B1 = 0 AND HK$ <> "0" THEN _
  2176.          GOTO 17410
  2177. 17450 RETURN
  2178. '
  2179. ' *****************************************************************************
  2180. ' * MENU COMMAND PROCESSING                                                   *
  2181. ' *****************************************************************************
  2182. '
  2183. 17460 IF HJ$ = "108" THEN _
  2184.          CO$ = "SYSOP" : _
  2185.          GOTO 18480
  2186. 17470 IF HJ$ = "109" THEN _
  2187.          CO$ = "Main Menu" : _
  2188.          GOTO 18100
  2189. 17480 IF HJ$ = "110" THEN _
  2190.          CO$ = "File System" : _
  2191.          GOTO 17820
  2192. 17490 IF HJ$ = "111" THEN _
  2193.          CO$ = "Utilities
  2194. '
  2195. ' *****************************************************************************
  2196. ' * STANDARD ROUTINE TO REQUEST A SECURITY LEVEL FOR UTILITY SUBSYSTEM COMANDS*
  2197. ' *****************************************************************************
  2198. '
  2199. 17500 LOCATE 24,1
  2200.       PRINT "Set ALL the " + CO$ + " commands to the SAME security level? (YES or NO)";
  2201. 17510 LINE INPUT;X$
  2202. 17520 IF LEN(X$) < 1 OR LEN(X$) > 3 THEN _
  2203.          GOTO 17500
  2204. 17530 SWAP HJ$,X$
  2205.       GOSUB 50654
  2206.       SWAP HJ$,X$
  2207. 17540 IF X$ = "YES" OR X$ = "Y" THEN _
  2208.          HJ$ = "all " + CO$ + " commands" :_
  2209.          GOSUB 17410 : _
  2210.          FOR I = 1 TO 16 : _
  2211.             UTILITY.FUNCTION(I) = B1 : _
  2212.          NEXT : _
  2213.          UE = B1 : _
  2214.          GOTO 16910
  2215. 17550 IF X$ = "NO" OR X$ = "N" THEN _
  2216.          GOTO 17570
  2217. 17560 GOTO 17500
  2218. 17570 GOSUB 25180
  2219.       LOCATE 5,10
  2220.       PRINT "B)aud rate                     " + STR$(UTILITY.FUNCTION(1))
  2221.       LOCATE 6,10
  2222.       PRINT "C)ase change                   " + STR$(UTILITY.FUNCTION(2))
  2223.       LOCATE 7,10
  2224.       PRINT "F)ile transfer protocol        " + STR$(UTILITY.FUNCTION(3))
  2225. 17610 LOCATE 8,10
  2226.       PRINT "G)raphics                      " + STR$(UTILITY.FUNCTION(4))
  2227.       LOCATE 9,10
  2228.       PRINT "H)elp                          " + STR$(UTILITY.FUNCTION(5))
  2229.       LOCATE 10,10
  2230.       PRINT "L)ine feeds                    " + STR$(UTILITY.FUNCTION(6))
  2231. 17640 LOCATE 11,10
  2232.       PRINT "M)sg margin                    " + STR$(UTILITY.FUNCTION(7))
  2233.       LOCATE 12,10
  2234.       PRINT "N)ulls                         " + STR$(UTILITY.FUNCTION(8))
  2235.       LOCATE 13,10
  2236.       PRINT "P)ass word                     " + STR$(UTILITY.FUNCTION(9))
  2237. 17670 LOCATE 14,10
  2238.       PRINT "Q)uit to main menu             " + STR$(UTILITY.FUNCTION(10))
  2239.       LOCATE 15,10
  2240.       PRINT "R)eview Default                " + STR$(UTILITY.FUNCTION(11))
  2241.       LOCATE 16,10
  2242.       PRINT "S)tatistics                    " + STR$(UTILITY.FUNCTION(12))
  2243. 17690 LOCATE 17,10
  2244.       PRINT "T)ime                          " + STR$(UTILITY.FUNCTION(13))
  2245.       LOCATE 18,10
  2246.       PRINT "U)serlog                       " + STR$(UTILITY.FUNCTION(14))
  2247.       LOCATE 19,10
  2248.       PRINT "X)Expert on/off                " + STR$(UTILITY.FUNCTION(15))
  2249. 17710 LOCATE 20,10
  2250.       PRINT "!)Prompt sound                 " + STR$(UTILITY.FUNCTION(16))
  2251. 17720 GOSUB 25210
  2252.       SWAP HJ$,X$
  2253.       GOSUB 50654
  2254.       SWAP HJ$,X$
  2255.       FF = INSTR("BCFGHLMNPQRSTUX!",X$)
  2256.       IF FF = 0 THEN _
  2257.          GOTO 17720
  2258. 17790 HJ$ = "all " + CO$ + " '" + X$ + "' commands"
  2259.       GOSUB 17410
  2260. 17800 UTILITY.FUNCTION(FF) = B1
  2261. 17810 GOTO 17570
  2262. '
  2263. ' *****************************************************************************
  2264. ' * STANDARD ROUTINE TO REQUEST A SECURITY LEVEL FOR FILES SUBSYSTEM COMANDS  *
  2265. ' *****************************************************************************
  2266. '
  2267. 17820 LOCATE 24,1
  2268.       PRINT "Set ALL the " + CO$ + " commands to the SAME security level? (YES or NO)";
  2269. 17830 LINE INPUT;X$
  2270. 17840 IF LEN(X$) < 1 OR LEN(X$) > 3 THEN _
  2271.          GOTO 17820
  2272. 17850 SWAP HJ$,X$
  2273.       GOSUB 50654
  2274.       SWAP HJ$,X$
  2275. 17860 IF X$ = "YES" OR X$ = "Y" THEN _
  2276.          HJ$ = "all " + CO$ + " commands" : _
  2277.          GOSUB 17410 : _
  2278.          FOR I = 1 TO 10 : _
  2279.             FILES.FUNCTION(I) = B1 : _
  2280.          NEXT : _
  2281.          FC = B1 : _
  2282.          GOTO 16910
  2283. 17870 IF X$ = "NO"  OR X$ = "N" THEN _
  2284.          GOTO 17890
  2285. 17880 GOTO 17820
  2286. 17890 GOSUB 25180
  2287.       LOCATE 5,10
  2288.       PRINT "D)ownload a file               " + STR$(FILES.FUNCTION(1))
  2289.       LOCATE 6,10
  2290.       PRINT "G)oodbye                       " + STR$(FILES.FUNCTION(2))
  2291.       LOCATE 7,10
  2292.       PRINT "H)elp                          " + STR$(FILES.FUNCTION(3))
  2293. 17950 LOCATE 8,10
  2294.       PRINT "L)ist files                    " + STR$(FILES.FUNCTION(4))
  2295.       LOCATE 9,10
  2296.       PRINT "N)ew files                     " + STR$(FILES.FUNCTION(5))
  2297.       LOCATE 10,10
  2298.       PRINT "Q)uit to main menu             " + STR$(FILES.FUNCTION(6))
  2299. 17975 LOCATE 11,10
  2300.       PRINT "S)earch directories for string " + STR$(FILES.FUNCTION(7))
  2301.       LOCATE 12,10
  2302.       PRINT "U)pload a file                 " + STR$(FILES.FUNCTION(8))
  2303.       LOCATE 13,10
  2304.       PRINT "X)Expert on/off                " + STR$(FILES.FUNCTION(9))
  2305. 17990 LOCATE 14,10
  2306.       PRINT "?) Xfer info                   " + STR$(FILES.FUNCTION(10))
  2307. 18000 GOSUB 25210
  2308.       SWAP HJ$,X$
  2309.       GOSUB 50654
  2310.       SWAP HJ$,X$
  2311.       FF = INSTR("DGHLNQSUX?",X$)
  2312.       IF FF = 0 THEN _
  2313.          GOTO 18000
  2314. 18070 HJ$ = "all " + CO$ + " '" + X$ + "' commands"
  2315.       GOSUB 17410
  2316. 18080 FILES.FUNCTION(FF) = B1
  2317. 18090 GOTO 17890
  2318. '
  2319. ' *****************************************************************************
  2320. ' * STANDARD ROUTINE TO REQUEST A SECURITY LEVEL FOR MESSAGE SUBSYSTEM COMANDS*
  2321. ' *****************************************************************************
  2322. '
  2323. 18100 LOCATE 24,1
  2324.       PRINT "Set ALL the " + CO$ + " commands to the SAME security level? (YES or NO)";
  2325. 18110 LINE INPUT;X$
  2326. 18120 IF LEN(X$) < 1 OR LEN(X$) > 3 THEN _
  2327.          GOTO 18100
  2328. 18130 SWAP HJ$,X$
  2329.       GOSUB 50654
  2330.       SWAP HJ$,X$
  2331. 18140 IF X$ = "YES" OR X$ = "Y" THEN _
  2332.          HJ$ = "all " + CO$ + " commands" : _
  2333.          GOSUB 17410 : _
  2334.          FOR I = 1 TO 21 : _
  2335.             MAIN.FUNCTION(I) = B1 : _
  2336.          NEXT : _
  2337.          MM = B1 : _
  2338.          GOTO 16910
  2339. 18150 IF X$ = "NO"  OR X$ = "N" THEN _
  2340.          GOTO 18170
  2341. 18160 GOTO 18100
  2342. 18170 GOSUB 25180
  2343.       LOCATE 3,8
  2344.       PRINT "Command     Security Level"
  2345.       LOCATE 3,37
  2346.       PRINT "   Command        Security Level"
  2347.       LOCATE 5,5
  2348.       PRINT "B)ulletins            " + STR$(MAIN.FUNCTION(1))
  2349.       LOCATE 6,5
  2350.       PRINT "C)omments             " + STR$(MAIN.FUNCTION(2))
  2351. 18220 LOCATE 7,5
  2352.       PRINT "D)oor subystem        " + STR$(MAIN.FUNCTION(3))
  2353.       LOCATE 8,5
  2354.       PRINT "E)nter message        " + STR$(MAIN.FUNCTION(4))
  2355.       LOCATE 9,5
  2356.       PRINT "F)iles system         " + STR$(MAIN.FUNCTION(5))
  2357.       LOCATE 10,5
  2358.       PRINT "G)oodbye              " + STR$(MAIN.FUNCTION(6))
  2359. 18260 LOCATE 11,5
  2360.       PRINT "H)elp                 " + STR$(MAIN.FUNCTION(7))
  2361.       LOCATE 12,5
  2362.       PRINT "I)nitial welcome      " + STR$(MAIN.FUNCTION(8))
  2363.       LOCATE 13,5
  2364.       PRINT "J)oin a conference    " + STR$(MAIN.FUNCTION(9))
  2365.       LOCATE 14,5
  2366.       PRINT "K)ill messages        " + STR$(MAIN.FUNCTION(10))
  2367. 18290 LOCATE 15,5
  2368.       PRINT "L)ines per page       " + STR$(MAIN.FUNCTION(11))
  2369.       LOCATE 5,40
  2370.       PRINT "O)perator             " + STR$(MAIN.FUNCTION(12))
  2371.       LOCATE 6,40
  2372.       PRINT "P)ersonal mail        " + STR$(MAIN.FUNCTION(13))
  2373.       LOCATE 7,40
  2374.       PRINT "Q)uick scan           " + STR$(MAIN.FUNCTION(14))
  2375. 18330 LOCATE 8,40
  2376.       PRINT "R)ead messages        " + STR$(MAIN.FUNCTION(15))
  2377.       LOCATE 9,40
  2378.       PRINT "S)can messages        " + STR$(MAIN.FUNCTION(16))
  2379.       LOCATE 10,40
  2380.       PRINT "U)tilities (more)     " + STR$(MAIN.FUNCTION(17))
  2381.       LOCATE 11,40
  2382.       PRINT "V)iew a conference    " + STR$(MAIN.FUNCTION(18))
  2383. 18357 LOCATE 12,40
  2384.       PRINT "W)ho's on other nodes " + STR$(MAIN.FUNCTION(19))
  2385.       LOCATE 13,40
  2386.       PRINT "X)Expert on/off       " + STR$(MAIN.FUNCTION(20))
  2387.       LOCATE 14,40
  2388.       PRINT "?)Functions           " + STR$(MAIN.FUNCTION(21))
  2389. 18380 GOSUB 25210
  2390.       SWAP HJ$,X$
  2391.       GOSUB 50654
  2392.       SWAP HJ$,X$
  2393.       FF = INSTR("BCDEFGHIJKLOPQRSUVWX?",X$)
  2394.       IF FF = 0 THEN _
  2395.          GOTO 18380
  2396. 18450 HJ$ = "all " + CO$ + " '" + X$ + "' commands"
  2397.       GOSUB 17410
  2398. 18460 MAIN.FUNCTION(FF) = B1
  2399. 18470 GOTO 18170
  2400. '
  2401. ' *****************************************************************************
  2402. ' * STANDARD ROUTINE TO REQUEST SECURITY LEVELS FOR UTILIITY SUBSYSTEM COMANDS*
  2403. ' *****************************************************************************
  2404. '
  2405. 18480 LOCATE 24,1
  2406.       PRINT "Set ALL the " + CO$ + " commands to the SAME security level? (YES or NO)";
  2407. 18490 LINE INPUT;X$
  2408. 18500 IF LEN(X$) < 1 OR LEN(X$) > 3 THEN _
  2409.          GOTO 18480 
  2410. 18510 SWAP HJ$,X$
  2411.       GOSUB 50654
  2412.       SWAP HJ$,X$
  2413. 18520 IF X$ = "YES" OR X$ = "Y" THEN _
  2414.          HJ$ = "all " + CO$ + " commands" : _
  2415.          GOSUB 17410 : _
  2416.          FOR I = 1 TO 7 : _
  2417.             SYSOP.FUNCTION(I) = B1 : _
  2418.          NEXT : _
  2419.          SF = B1 : _
  2420.          GOTO 16910
  2421. 18530 IF X$ = "NO"  OR X$ = "N" THEN _
  2422.          GOTO 18550
  2423. 18540 GOTO 18480
  2424. 18550 GOSUB 25180
  2425.       LOCATE 5,10
  2426.       PRINT " 1 List comments               " + STR$(SYSOP.FUNCTION(1))
  2427.       LOCATE 6,10
  2428.       PRINT " 2 List callers log            " + STR$(SYSOP.FUNCTION(2))
  2429.       LOCATE 7,10
  2430.       PRINT " 3 Recover a Msg               " + STR$(SYSOP.FUNCTION(3))
  2431. 18610 LOCATE 8,10
  2432.       PRINT " 4 Erase comments              " + STR$(SYSOP.FUNCTION(4))
  2433.       LOCATE 9,10
  2434.       PRINT " 5 Users maintenance           " + STR$(SYSOP.FUNCTION(5))
  2435.       LOCATE 10,10
  2436.       PRINT " 6 Toggle page bell            " + STR$(SYSOP.FUNCTION(6))
  2437. 18650 LOCATE 11,10
  2438.       PRINT " 7 Exit to DOS                 " + STR$(SYSOP.FUNCTION(7))
  2439. 18670 GOSUB 25210
  2440.       IF VAL(X$) < 1 OR VAL(X$) > 7 THEN _
  2441.          GOTO 18670
  2442. 18700 HJ$ = "all " + CO$ + " '" + X$ + "' commands"
  2443.       GOSUB 17410
  2444. 18710 SYSOP.FUNCTION(VAL(X$)) = B1
  2445. 18720 GOTO 18550
  2446. '
  2447. ' *****************************************************************************
  2448. ' * COMMON SUBROUTINE TO DISPLAY OPTION                                       *
  2449. ' *****************************************************************************
  2450. '
  2451. 18730 HJ$ = "option " + HJ$
  2452.       RETURN
  2453. '
  2454. ' *****************************************************************************
  2455. ' * CONVERT DISPLAYABLE OPTIONS INTO RBBS-PC.DEF PARAMETER VARIABLES          *
  2456. ' *****************************************************************************
  2457. '
  2458. 18740 GOSUB 50340
  2459.       IF EXPERT.USER$ = "NOVICE" THEN _
  2460.          EXPERT.USER = 0
  2461. 18750 IF EXPERT.USER$ = "EXPERT" THEN _
  2462.          EXPERT.USER = -1
  2463. 18760 DOWNLOAD.DRIVES$ = DRIVES.FOR.DOWNLOADS$ + DRIVE.FOR.UPLOADS$
  2464. 18770 PROMPT.BELL = -1
  2465.       IF PROMPT.BELL$ = "OFF" THEN _
  2466.          PROMPT.BELL = 0
  2467. 18772 PAGING.PRINTER.SUPPORT$ = ". "
  2468.       IF M11$ = "YES" THEN _
  2469.          PAGING.PRINTER.SUPPORT$ = ". " + CHR$(7)
  2470. 18774 CODE.TYPE = FALSE
  2471.       IF CODE.TYPE$ = "COMPILED" THEN _
  2472.          CODE.TYPE = TRUE
  2473. 18776 MID$(MODEM.INIT.COMMAND$,4,1) = "1"
  2474.       IF M14$ = "OFF" THEN _
  2475.          MID$(MODEM.INIT.COMMAND$,4,1) = "0"
  2476. 18778 BULLETINS.OPTIONAL = FALSE
  2477.       IF BULLETINS.OPTIONAL$ = "YES" THEN _
  2478.          BULLETINS.OPTIONAL = TRUE
  2479. 18780 MESSAGE.REMINDER = FALSE
  2480.       IF MESSAGE.REMINDER$ = "YES" THEN _
  2481.          MESSAGE.REMINDER = TRUE
  2482. 18782 REQUIRE.NON.ASCII = FALSE
  2483.       IF REQUIRE.NON.ASCII$ = "YES" THEN _
  2484.          REQUIRE.NON.ASCII = TRUE
  2485. 18784 WELCOME.INTERRUPTABLE = FALSE
  2486.       IF WELCOME.INTERRUPTABLE$ = "YES" THEN _
  2487.          WELCOME.INTERRUPTABLE = TRUE
  2488. 18786 REMIND.FILE.TRANSFERS = FALSE
  2489.       IF REMIND.FILE.TRANSFERS$ = "YES" THEN _
  2490.          REMIND.FILE.TRANSFERS = TRUE
  2491. 18788 REMIND.PROFILE = FALSE
  2492.       IF REMIND.PROFILE$ = "YES" THEN _
  2493.          REMIND.PROFILE = TRUE
  2494. 18790 DOORS.AVAILABLE = FALSE
  2495.       IF DOORS.AVAILABLE$ = "YES" THEN _
  2496.          DOORS.AVAILABLE = TRUE
  2497. 18792 LIMIT.DAILY.TIME = FALSE
  2498.       IF LIMIT.DAILY.TIME$ = "YES" THEN _
  2499.          LIMIT.DAILY.TIME = TRUE
  2500. 18794 COMMANDS.BETWEEN.RINGS = FALSE
  2501.       IF COMMANDS.BETWEEN.RINGS$ = "YES" THEN _
  2502.          COMMANDS.BETWEEN.RINGS = TRUE
  2503. 18796 MNP.SUPPORT = FALSE
  2504.       IF MNP.SUPPORT$ = "YES" THEN _
  2505.          MNP.SUPPORT = TRUE
  2506. 18799 WILL.SUBDIRS.B.USED = FALSE
  2507.       IF WILL.SUBDIRS.B.USED$ = "YES" THEN _
  2508.          WILL.SUBDIRS.B.USED = TRUE
  2509. 18801 UPLOAD.TO.SUBDIR = FALSE
  2510.       IF UPLOAD.TO.SUBDIR$ = "YES" THEN _
  2511.          UPLOAD.TO.SUBDIR = TRUE
  2512. 18803 DOWNLOAD.TO.SUBDIR = FALSE
  2513.       IF DOWNLOAD.TO.SUBDIR$ = "YES" THEN _
  2514.          DOWNLOAD.TO.SUBDIR = TRUE
  2515. 18805 RESTRICT.BAUD = FALSE
  2516.       IF RESTRICT.BAUD$ = "YES" THEN _
  2517.          RESTRICT.BAUD = TRUE
  2518. 18806 IF RESTRICT.BAUD$="YES=Registered users" THEN _
  2519.          RESTRICT.BAUD=-2
  2520. 18807 USE.COLOR = FALSE
  2521.       IF USE.COLOR$ = "YES" THEN _
  2522.          USE.COLOR = TRUE
  2523. 18809 DISKFULL.GO.OFFLINE = FALSE
  2524.       IF DISKFULL.GO.OFFLINE$ = "YES" THEN _
  2525.          DISKFULL.GO.OFFLINE = TRUE
  2526. 18811 EXTENDED.LOGGING = FALSE
  2527.       IF EXTENDED.LOGGING$ = "YES" THEN _
  2528.          EXTENDED.LOGGING = TRUE
  2529. 18813 DUMB.MODEM = FALSE
  2530.       IF DUMB.MODEM$ = "YES" THEN _
  2531.          DUMB.MODEM = TRUE
  2532. 18814 COMMENTS.AS.MESSAGES=FALSE
  2533.       IF COMMENTS.AS.MESSAGES$="YES" THEN _
  2534.          COMMENTS.AS.MESSAGES=TRUE
  2535.       TURBO.RBBS = FALSE                                             ' CPC14-1C
  2536.       IF TURBO.RBBS$ = "YES" THEN _                                  ' CPC14-1C
  2537.          TURBO.RBBS = TRUE                                           ' CPC14-1C
  2538. 18989 IF MAIN.MESSAGE.FILE$ <> MAINMSG$ THEN _
  2539.          MAIN.MESSAGE.FILE$ = MAINMSG$
  2540. 18990 IF MAIN.USER.FILE$ <> MAINUSR$ THEN _
  2541.          MAIN.USER.FILE$ = MAINUSR$
  2542. 18998 IF F THEN _
  2543.          GOSUB 30040
  2544. 18999 OPEN "O",#1,CONFIG.FILENAME$
  2545. 19010 IF INSTR(MO$,":") < 1 THEN _
  2546.          MO$ = MO$ + ":
  2547. 19020 IF INSTR(SJ$,":") < 1 THEN _
  2548.          SJ$ = SJ$ + ":
  2549. 19030 IF INSTR(TB$,":") < 1 THEN _
  2550.          TB$ = TB$ + ":
  2551. 19031 IF INSTR(DRIVE.FOR.BULLETINS$,":") < 1 THEN _
  2552.          DRIVE.FOR.BULLETINS$ = DRIVE.FOR.BULLETINS$ + ":
  2553. 19032 T$ = DIRECTORY.EXTENTION$
  2554.       IF INSTR(DIRECTORY.EXTENTION$,".") THEN _
  2555.          T$ = MID$(DIRECTORY.EXTENTION$,INSTR(DIRECTORY.EXTENTION$,".") + 1,LEN(DIRECTORY.EXTENTION$))
  2556. 19033 S$ = UPLOAD.DIRECTORY$
  2557.       IF INSTR(UPLOAD.DIRECTORY$,".") THEN _
  2558.          S$ = MID$(UPLOAD.DIRECTORY$,1,INSTR(UPLOAD.DIRECTORY$,".")-1)
  2559. 19034 DIRECTORY.EXTENTION$ = T$
  2560. 19035 UPLOAD.DIRECTORY$ = S$
  2561. 19036 IF DOWNLOAD.TO.SUBDIR$ = "NO" THEN _
  2562.          DNLD.SUB = 0 : _
  2563.          FOR I = 1 TO 99 : _
  2564.             DNLD$(I) = "" : _
  2565.          NEXT
  2566. 19037 IF UPLOAD.TO.SUBDIR$   = "NO" THEN _
  2567.          UPLOAD.SUBDIR$ = DRIVE.FOR.UPLOADS$ + ":"
  2568. 19038 IF UPLOAD.TO.SUBDIR$   = "YES" AND UPLOAD.SUBDIR$<>"" THEN _
  2569.          DRIVE.FOR.UPLOADS$ = UPLOAD.SUBDIR$
  2570. 19039 IF REQUIRED.RINGS = 0 AND _                                    ' CPC14-1D
  2571.      MID$(MODEM.INIT.COMMAND$,INSTR(MODEM.INIT.COMMAND$,"S0")+3,5)<>"1V1X1" THEN _
  2572.      MID$(MODEM.INIT.COMMAND$,INSTR(MODEM.INIT.COMMAND$,"S0")+3,5)="1V1X1" : _ 'CPC14-1D
  2573.      MID$(MODEM.INIT.COMMAND$,6,1)="0"                           ' CPC14-1D
  2574.       IF REQUIRED.RINGS > 0 AND _
  2575.          MID$(MODEM.INIT.COMMAND$,INSTR(MODEM.INIT.COMMAND$,"S0")+3,3)="0  " THEN _
  2576.          MID$(MODEM.INIT.COMMAND$,INSTR(MODEM.INIT.COMMAND$,"S0")+3,3)="254"
  2577. '
  2578. ' *****************************************************************************
  2579. ' * WRITE OUT THE "RBBS-PC.DEF" FILE WITH THE SYSOP'S SPECIFIED CONFIGURATION *
  2580. ' *****************************************************************************
  2581. '
  2582. 19040 WRITE #1,DOWNLOAD.DRIVES$, _ 
  2583.                SYSOP.PASSWORD.1$, _
  2584.                SYSOP.PASSWORD.2$, _
  2585.                SYSOP.FIRST.NAME$, _ 
  2586.                SYSOP.LAST.NAME$, _
  2587.                REQUIRED.RINGS, _
  2588.                START.OFFICE.HOURS, _
  2589.                END.OFFICE.HOURS, _
  2590.                MINUTES.PER.SESSION!, _
  2591.                MAX.ALLOWED.MSGS.FRM.DEF, _
  2592.                ACT.MNTHS.B4.DELETING, _
  2593.                UPLOAD.DIRECTORY$,_ 
  2594.                EXPERT.USER, _
  2595.                ACTIVE.BULLETINS, _
  2596.                PROMPT.BELL, _
  2597.                PCJR, _
  2598.                CODE.TYPE, _
  2599.                MENU$(1), _
  2600.                MENU$(2), _
  2601.                MENU$(3), _
  2602.                MENU$(4), _
  2603.                MENU$(5), _
  2604.                CONFERENCE.MENU$, _
  2605.                CONFERENCE.VIEWER.SEC.LVL, _
  2606.                WELCOME.INTERRUPTABLE, _
  2607.                REMIND.FILE.TRANSFERS, _
  2608.                PAGE.LENGTH, _
  2609.                MAX.MESSAGE.LINES, _
  2610.                DOORS.AVAILABLE, _
  2611.                MO$
  2612. 19050 IF INSTR(BULLETIN.MENU$,":")   < 1 THEN _
  2613.          BULLETIN.MENU$ = DRIVE.FOR.BULLETINS$ + BULLETIN.MENU$
  2614. 19060 IF INSTR(BULLETIN.PREFIX$,":") < 1 THEN _
  2615.          BULLETIN.PREFIX$ = DRIVE.FOR.BULLETINS$ + BULLETIN.PREFIX$
  2616. 19070 FOR I = 1 TO 9
  2617. 19080   HELP$(I) = DRIVE.FOR.HELP.FILES$ + _
  2618.                    ":" + _
  2619.                    HELP.FILE.PREFIX$ + _
  2620.                    RIGHT$(STR$(I),1)
  2621. 19090 NEXT
  2622. 19100 MAIN.FUNCTION(6) = MINIMUM.LOGON.SECURITY
  2623.       FILES.FUNCTION(2) = MINIMUM.LOGON.SECURITY
  2624. 19110 WRITE #1,MAIN.MESSAGE.FILE$, _
  2625.                MAIN.MESSAGE.BACKUP$, _
  2626.                CALLERS.FILE$, _
  2627.                COMMENTS.FILE$, _
  2628.                MAIN.USER.FILE$, _
  2629.                WELCOME.FILE$, _
  2630.                NEWUSER.FILE$, _
  2631.                DIRECTORY.EXTENTION$, _
  2632.                COM.PORT$, _
  2633.                BULLETINS.OPTIONAL, _
  2634.                MODEM.INIT.COMMAND$, _
  2635.                TB$, _
  2636.                DOS.VERSION, _
  2637.                FG, _
  2638.                BG, _
  2639.                BORDER, _
  2640.                RBBS.BAT$, _
  2641.                RCTTY.BAT$
  2642. 19120 WRITE #1,OMIT.MAIN.DIRECTORY$, _
  2643.                OMIT.UPLOAD.DIRECTORY$, _
  2644.                HELP$(1), _
  2645.                HELP$(2), _
  2646.                HELP$(3), _
  2647.                HELP$(4), _
  2648.                HELP$(5), _
  2649.                HELP$(6), _
  2650.                HELP$(7), _
  2651.                HELP$(8), _
  2652.                HELP$(9), _
  2653.                BULLETIN.MENU$, _
  2654.                BULLETIN.PREFIX$, _
  2655.                DRIVE.FOR.BULLETINS$, _
  2656.                MESSAGE.REMINDER, _
  2657.                REQUIRE.NON.ASCII, _
  2658.                DOORS.SECURITY.LEVEL, _
  2659.                MAXIUM.NUMBER.OF.NODES, _
  2660.                NETWORK.TYPE, _
  2661.                RECYCLE.TO.DOS, _
  2662.                MAX.USR.FILE.SIZE.FRM.DEF, _
  2663.                MAX.MSG.FILE.SIZE.FRM.DEF!, _
  2664.                TRASHCAN.FILE$
  2665. 19130 WRITE #1,MINIMUM.LOGON.SECURITY, _
  2666.                DEFAULT.SECURITY.LEVEL, _
  2667.                SYSOP.SECURITY.LEVEL, _
  2668.                FILESEC.FILE$, _
  2669.                SYSOP.MENU.SECURITY.LEVEL, _
  2670.                LOCAL.PASSWORD$, _
  2671.                MAXIMUM.VIOLATIONS, _
  2672.                SYSOP.FUNCTION(1), _
  2673.                SYSOP.FUNCTION(2), _
  2674.                SYSOP.FUNCTION(3), _
  2675.                SYSOP.FUNCTION(4), _
  2676.                SYSOP.FUNCTION(5), _
  2677.                SYSOP.FUNCTION(6), _
  2678.                SYSOP.FUNCTION(7), _
  2679.                PASSWORD.FILE$, _
  2680.                MAXIMUM.PASSWORD.CHANGES, _
  2681.                MINIMUM.SECURITY.FOR.TEMP.PASSWORD, _
  2682.                OVERWRITE.SECURITY.LEVEL, _
  2683.                DOORS.TERMINAL.TYPE, _
  2684.                LIMIT.DAILY.TIME
  2685. 19140 WRITE #1,MAIN.FUNCTION(1), _
  2686.                MAIN.FUNCTION(2), _
  2687.                MAIN.FUNCTION(3), _
  2688.                MAIN.FUNCTION(4), _
  2689.                MAIN.FUNCTION(5), _
  2690.                MAIN.FUNCTION(6), _
  2691.                MAIN.FUNCTION(7), _
  2692.                MAIN.FUNCTION(8), _
  2693.                MAIN.FUNCTION(9), _
  2694.                MAIN.FUNCTION(10), _
  2695.                MAIN.FUNCTION(11), _
  2696.                MAIN.FUNCTION(12), _
  2697.                MAIN.FUNCTION(13), _
  2698.                MAIN.FUNCTION(14), _
  2699.                MAIN.FUNCTION(15), _
  2700.                MAIN.FUNCTION(16), _
  2701.                MAIN.FUNCTION(17), _
  2702.                MAIN.FUNCTION(18), _
  2703.                MAIN.FUNCTION(19), _
  2704.                MAIN.FUNCTION(20), _
  2705.                MAIN.FUNCTION(21), _
  2706.                DEFAULT.MACHINE.TYPE$, _
  2707.                WAIT.BEFORE.DISCONNECT
  2708. 19150 WRITE #1,FILES.FUNCTION(1), _
  2709.                FILES.FUNCTION(2), _
  2710.                FILES.FUNCTION(3), _
  2711.                FILES.FUNCTION(4), _
  2712.                FILES.FUNCTION(5), _
  2713.                FILES.FUNCTION(6), _
  2714.                FILES.FUNCTION(7), _
  2715.                FILES.FUNCTION(8), _
  2716.                FILES.FUNCTION(9), _
  2717.                FILES.FUNCTION(10), _
  2718.                UTILITY.FUNCTION(1), _
  2719.                UTILITY.FUNCTION(2), _
  2720.                UTILITY.FUNCTION(3), _
  2721.                UTILITY.FUNCTION(4), _
  2722.                UTILITY.FUNCTION(5), _
  2723.                UTILITY.FUNCTION(6), _
  2724.                UTILITY.FUNCTION(7), _
  2725.                UTILITY.FUNCTION(8), _
  2726.                UTILITY.FUNCTION(9), _
  2727.                UTILITY.FUNCTION(10), _
  2728.                UTILITY.FUNCTION(11), _
  2729.                UTILITY.FUNCTION(12), _
  2730.                UTILITY.FUNCTION(13), _
  2731.                UTILITY.FUNCTION(14), _
  2732.                UTILITY.FUNCTION(15), _
  2733.                UTILITY.FUNCTION(16), _
  2734.                UPLOAD.TIME.FACTOR!, _
  2735.                COMPUTER.TYPE, _
  2736.                REMIND.PROFILE, _
  2737.                RBBS.NAME$, _
  2738.                COMMANDS.BETWEEN.RINGS, _
  2739.                MNP.SUPPORT, _
  2740.                PAGING.PRINTER.SUPPORT$, _
  2741.                MODEM.INIT.BAUD$
  2742. 19159 IF COM.PORT$ = "COM1" THEN _
  2743.          LSB = &H3F8 : _
  2744.          MSB = &H3F9 : _
  2745.          LINE.CONTROL.REGISTER = &H3FB : _
  2746.          MODEM.CONTROL.REGISTER = &H3FC : _
  2747.          LINE.STATUS.REGISTER = &H3FD : _
  2748.          MODEM.STATUS.REGISTER = &H3FE  
  2749. 19160 IF COM.PORT$ = "COM2" OR PCJR = 1 THEN _
  2750.          LSB = &H2F8 : _
  2751.          MSB = &H2F9 : _
  2752.          LINE.CONTROL.REGISTER = &H2FB : _
  2753.          MODEM.CONTROL.REGISTER = &H2FC : _
  2754.          LINE.STATUS.REGISTER = &H2FD : _
  2755.          MODEM.STATUS.REGISTER = &H2FE
  2756. 19161 WRITE #1,SYSOP.FUNCTION.KEY1$, _
  2757.                SYSOP.FUNCTION.KEY2$, _
  2758.                SYSOP.FUNCTION.KEY3$, _
  2759.                SYSOP.FUNCTION.KEY4$, _
  2760.                SYSOP.FUNCTION.KEY5$, _
  2761.                SYSOP.FUNCTION.KEY6$, _
  2762.                SYSOP.FUNCTION.KEY7$, _
  2763.                SYSOP.FUNCTION.KEY8$, _
  2764.                SYSOP.FUNCTION.KEY9$, _
  2765.                SYSOP.FUNCTION.KEY10$, _
  2766.                SYSOP.FUNCTION.KEY11$, _
  2767.                SYSOP.FUNCTION.KEY12$, _
  2768.                SEC.LVL.EXEMPT.FRM.PURGING, _                         ' CPC14-1C
  2769.                MODEM.INIT.WAIT.TIME, _                               ' CPC14-1C
  2770.                MODEM.COMMAND.DELAY.TIME, _                           ' CPC14-1C
  2771.                TURBO.RBBS                                            ' CPC14-1C
  2772. 19162 WRITE #1,DNLD.SUB, _
  2773.                WILL.SUBDIRS.B.USED, _
  2774.                UPLOAD.TO.SUBDIR, _
  2775.                DOWNLOAD.TO.SUBDIR, _
  2776.                UPLOAD.SUBDIR$, _
  2777.                RESTRICT.BAUD, _
  2778.                USE.COLOR, _
  2779.                DISKFULL.GO.OFFLINE, _
  2780.                EXTENDED.LOGGING, _
  2781.                MODEM.RESET.COMMAND$, _
  2782.                MODEM.COUNT.RINGS.COMMAND$, _
  2783.                MODEM.ANSWER.COMMAND$, _
  2784.                MODEM.GO.OFFHOOK.COMMAND$, _
  2785.                DISK.FOR.DOS$, _
  2786.                DUMB.MODEM, _
  2787.                COMMENTS.AS.MESSAGES, _                               ' CPC14-1C
  2788.                LSB, _
  2789.                MSB, _
  2790.                LINE.CONTROL.REGISTER, _
  2791.                MODEM.CONTROL.REGISTER, _
  2792.                LINE.STATUS.REGISTER, _
  2793.                MODEM.STATUS.REGISTER
  2794. 19165 IF DNLD.SUB<1 OR DNLD.SUB>99 THEN _
  2795.          GOTO 19170
  2796.       FOR I = 1 TO DNLD.SUB
  2797.          WRITE #1,DNLD$(I)
  2798.       NEXT 
  2799. 19170 CLOSE #1
  2800. '
  2801. ' *****************************************************************************
  2802. ' * NOTIFY THE SYSOP THAT THE CONFIGURATION DESCRIPTION FILE HAS BEEN WRITTEN *
  2803. ' *****************************************************************************
  2804. '
  2805. 19175 CLS
  2806.       LOCATE 12,1,1
  2807.       PRINT "RBBS-PC configuration description file, " + CONFIG.FILENAME$ + ", now on default drive."
  2808.       GOSUB 60380
  2809. 19179 GOTO 60340
  2810. '
  2811. ' *****************************************************************************
  2812. ' *  DISPLAY PARAMETERS FOR RUNNING MULITPLE COPIES OF RBBS-PC                *
  2813. ' *****************************************************************************
  2814. '
  2815. 21550 DISPLAYED.PAGE.NUMBER = 7
  2816. 21560 GOSUB 30040
  2817. 21565 MAX.USR.FILE.SIZE.FRM.DEF = HIGHEST.USER.RECORD
  2818.       MAX.MSG.FILE.SIZE.FRM.DEF! = HIGHEST.MESSAGE.RECORD
  2819.       MAX.ALLOWED.MSGS.FRM.DEF  = MAXIMUM.NUMBER.OF.MSGS
  2820. 21570 GOSUB 24800
  2821. 21580 LOCATE  3,9
  2822.       PRINT "121. Maximum number of concurrent RBBS-PC's  -------"STR$(MAXIUM.NUMBER.OF.NODES)
  2823. 21590 IF MAXIUM.NUMBER.OF.NODES = 1 THEN _
  2824.          MT$ = "single RBBS-PC copy " ELSE _
  2825.          MT$ = "concurrent RBBS-PC's" : _
  2826.          GOSUB 21900 : _
  2827.          IF NETWORK.TYPE < 0 OR NETWORK.TYPE > 4 THEN _
  2828.             GOTO 21810
  2829. 21600 LOCATE  4,9
  2830.       PRINT "122. Environment running " + MT$ + " ------ " + NETWORK.TYPE$
  2831. 21610 LOCATE  5,9
  2832.       PRINT "123. RBBS-PC 'recycle' method when users log off --- " + RECYCLE.TO.DOS$
  2833. 21615 FILE$ = MAIN.MESSAGE.FILE$
  2834.       GOSUB 30180
  2835.       MAX.MSG.FILE.SIZE.FRM.DEF! = UG
  2836. 21620 LOCATE  6,9
  2837.       PRINT "124. Number of records in the " + MAIN.USER.FILE$ + " file ";STRING$(16-LEN(MAIN.USER.FILE$),"-");STR$(MAX.USR.FILE.SIZE.FRM.DEF)
  2838. 21630 LOCATE  7,9
  2839.       PRINT "125. Number of records in " + MAIN.MESSAGE.FILE$ + " file ";STRING$(20-LEN(MAIN.MESSAGE.FILE$),"-");STR$(MAX.MSG.FILE.SIZE.FRM.DEF!)
  2840. 21635 LOCATE  8,9
  2841.       PRINT "126. Maximum number of messages allowed ------------"STR$(MAX.ALLOWED.MSGS.FRM.DEF)
  2842. 21636 LOCATE  9,9
  2843.       PRINT "127. Conference File Maintenance.
  2844. 21640 GOSUB 24890
  2845. 21650 GOSUB 22160
  2846. 21660 IF IX THEN _
  2847.          ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,16910,23000,21680
  2848. 21670 GOTO 21650
  2849. 21680 GOSUB 50340
  2850. 21690 IF HJ$ = "121" THEN _
  2851.          GOTO 21750
  2852. 21700 IF HJ$ = "122" THEN _
  2853.          GOTO 21810
  2854. 21710 IF HJ$ = "123" THEN _
  2855.          GOTO 21950
  2856. 21720 IF HJ$ = "125" THEN _
  2857.          GOSUB 22040 : _
  2858.          GOTO 21550
  2859. 21730 IF HJ$ = "124" THEN _
  2860.          IF F = 2 THEN _
  2861.             GOSUB 22560 : _
  2862.             GOTO 21550 ELSE _
  2863.          GOSUB 22100 : _
  2864.          GOTO 21550
  2865. 21735 IF HJ$ = "126" THEN _
  2866.          GOTO 13890
  2867. 21736 IF HJ$ = "127" THEN _
  2868.          GOTO 25040
  2869. 21740 GOTO 21640
  2870. '
  2871. ' *****************************************************************************
  2872. ' * ALLOW THE USER TO SPECIFY THE MAXIMUM NUMBER OF RBBS-PC'S TO CONFIGURE FOR*
  2873. ' *****************************************************************************
  2874. '
  2875. 21750 GOSUB 50340
  2876.       LOCATE 24,5
  2877.       PRINT "Maximum number of conurrent RBBS-PC's? (a value between 1 and 36)";
  2878. 21760 LINE INPUT;HJ$
  2879. 21770 B1 = VAL(HJ$)
  2880. 21780 IF B1 < 1 OR B1 > 36 THEN _
  2881.          GOTO 21750
  2882. 21790 IF MAXIUM.NUMBER.OF.NODES = B1 THEN _
  2883.          GOTO 21550
  2884. 21795 B3! = MAX.MSG.FILE.SIZE.FRM.DEF!
  2885.       GOSUB 30610
  2886. 21800 GOTO 21550
  2887. '
  2888. ' *****************************************************************************
  2889. ' * IDENTIFY THE NETWORK TYPES THAT RBBS-PC CAN RUN IN                        *
  2890. ' *****************************************************************************
  2891. '
  2892. 21810 CLS
  2893.       LOCATE 3,5
  2894.       PRINT "RBBS-PC is supported in the following:"
  2895.       LOCATE 5,20
  2896.       PRINT "Environment"
  2897.       LOCATE 7,10
  2898.       PRINT "0. Single RBBS-PC in an IBM DOS environment"
  2899.       LOCATE 9,10
  2900.       PRINT "1. MultiLink (multi-tasking under single DOS)
  2901. 21840 LOCATE 11,10
  2902.       PRINT "2. Omninet (CORVUS)"
  2903.       LOCATE 13,10
  2904.       PRINT "3. PC-NET (Orchid)"
  2905.       LOCATE 15,10
  2906.       PRINT "4. DESQview (Quarterdeck)"                              ' CPC14-1C
  2907.       LOCATE 17,10                                                   ' CPC14-1C
  2908.       PRINT "5. IBM DOS (3.1 or above) file sharing not supported"   ' CPC14-1C
  2909. 21870 GOSUB 50340
  2910.       LOCATE 24,5
  2911.       PRINT "Select environment (0 to 5, CR to end)";                ' CPC14-1C
  2912.       LINE INPUT;X$
  2913.       IF X$ = "" THEN _
  2914.          GOTO 21550
  2915.       NETWORK.TYPE = VAL(X$)
  2916.       GOSUB 21890
  2917.       GOTO 21550
  2918. 21890 IF NETWORK.TYPE < 0 OR NETWORK.TYPE > 5 GOTO 21870             ' CPC14-1C
  2919. 21895 IF NETWORK.TYPE = 0 THEN _
  2920.          NETWORK.TYPE$ = "IBM's DOS
  2921. 21900 IF NETWORK.TYPE = 1 THEN _
  2922.          NETWORK.TYPE$ = "MultiLink
  2923. 21910 IF NETWORK.TYPE = 2 THEN _
  2924.          NETWORK.TYPE$ = "Omninet
  2925. 21920 IF NETWORK.TYPE = 3 THEN _
  2926.          NETWORK.TYPE$ = "PC-NET
  2927.       IF NETWORK.TYPE = 4 THEN _                                     ' CPC14-1C
  2928.          NETWORK.TYPE$ = "DESQview"                                  ' CPC14-1C
  2929. 21930 IF NETWORK.TYPE = 5 THEN _                                     ' CPC14-1C
  2930.          NETWORK.TYPE$ = "IBM's file sharing -- future"              ' CPC14-1C
  2931. 21940 RETURN
  2932. '
  2933. ' *****************************************************************************
  2934. ' * ALLOW THE SYSOP TO SELECT HOW RBBS-PC IS TO RECYCLE WHEN A USER LOGS OFF  *
  2935. ' *****************************************************************************
  2936. '
  2937. 21950 GOSUB 50340
  2938.       LOCATE 24,5
  2939.       PRINT "How RBBS-PC recycles when users logs off (SYSTEM or INTERNAL)? ";
  2940. 21960 LINE INPUT;HJ$
  2941. 21970 IF LEN(HJ$) < 1 OR LEN(HJ$) > 8 THEN _
  2942.          GOTO 21950
  2943. 21980 GOSUB 50654
  2944. 21990 IF HJ$ = "SYSTEM" THEN _
  2945.          RECYCLE.TO.DOS = 1 : _
  2946.          GOTO 22020
  2947. 22000 IF HJ$ = "INTERNAL" THEN _
  2948.          RECYCLE.TO.DOS = 0 : _
  2949.          GOTO 22020
  2950. 22010 GOTO 21950
  2951. 22020 RECYCLE.TO.DOS$ = HJ$
  2952. 22030 GOTO 21550
  2953. '
  2954. ' *****************************************************************************
  2955. ' * ALLOW THE SYSOP TO SPECIFY THE MAXIMUM NUMBER OF RECORDS IN MESSAGES FILE *
  2956. ' *****************************************************************************
  2957. '
  2958. 22040 GOSUB 50340
  2959.       LOCATE 24,5
  2960.       PRINT "Max. records in preformatted " + MAIN.MESSAGE.FILE$ + " file (>" + STR$(5*MAX.ALLOWED.MSGS.FRM.DEF + 1 + MAXIUM.NUMBER.OF.NODES) + "):";
  2961. 22050 LINE INPUT;HJ$
  2962. 22060 B3! = VAL(HJ$)
  2963. 22070 IF B3! <= (5*MAX.ALLOWED.MSGS.FRM.DEF + 1 + MAXIUM.NUMBER.OF.NODES) OR _
  2964.          B3! > 9999999! THEN _
  2965.          GOTO 22040
  2966. 22080 B1 = MAXIUM.NUMBER.OF.NODES
  2967.       GOSUB 30610
  2968.       MAX.MSG.FILE.SIZE.FRM.DEF! = B3!
  2969. 22090 RETURN
  2970. '
  2971. ' *****************************************************************************
  2972. ' * BUILD THE USERS FILE TO SUIT                                              *
  2973. ' *****************************************************************************
  2974. '
  2975. 22100 GOSUB 50340
  2976.       LOCATE 24,5
  2977.       FF = CURRENT.USER.COUNT
  2978.       IF FF > 1 THEN _
  2979.          FF = FF-1
  2980. 22105 GOSUB 50340
  2981.       LOCATE 24,5
  2982.       PRINT STR$(FF) + " of" + STR$(HIGHEST.USER.RECORD) + _
  2983.             " records used. Enter new maximum number of records for " + _
  2984.             MAIN.USER.FILE$ + ":";
  2985. 22110 LINE INPUT;HJ$
  2986. 22120 B1 = VAL(HJ$)
  2987. 22130 IF B1 < 1 OR B1 > 99999! OR B1 < FF THEN _
  2988.          GOTO 22100
  2989. 22140 B2 = 2
  2990.       WHILE B2 < B1
  2991.         B2 = B2 * 2
  2992.       WEND
  2993.       IF MAX.USR.FILE.SIZE.FRM.DEF = B2 THEN _
  2994.          RETURN
  2995. 22142 XX$ = "Change " + MAIN.USER.FILE$ + " file to" + STR$(B2) + " records? (YES or NO)"
  2996.       GOSUB 50345
  2997.       GOSUB 22380
  2998.       ON AB GOTO 22100,22150,22100,22100
  2999. 22150 MAX.USR.FILE.SIZE.FRM.DEF = B2
  3000.       D.FLAG = -1
  3001.       GOSUB 24110
  3002.       IB = 1
  3003.       MAX.USR.FILE.SIZE.FRM.DEF = B2
  3004.       HIGHEST.USER.RECORD = B2
  3005.       GOSUB 30450
  3006.       GOSUB 50340
  3007.       RETURN
  3008. '
  3009. ' *****************************************************************************
  3010. ' * COMMON SUBROUTINE TO HANDLE THE FUNCTION KEYS AND SCROLL BETWEEN CONFIG'S *
  3011. ' * PAGES OF OPTIONS.                                                         *
  3012. ' *****************************************************************************
  3013. '
  3014. 22160 I! = FRE(C$)
  3015.       Y$ = INKEY$
  3016. 22170 IX = 0
  3017. 22180 IF LEN(Y$) < 1 THEN _
  3018.          GOTO 22160
  3019. 22190 IF LEN(Y$) = 2 THEN _
  3020.          GOTO 22240
  3021. 22200 IF ASC(Y$) = 13 THEN _
  3022.          IX = 13 : _
  3023.          RETURN
  3024. 22205 IF ASC(Y$) = 8 AND LEN(HJ$) > 0 THEN _
  3025.          HJ$ = LEFT$(HJ$,LEN(HJ$)-1) : _
  3026.          PRINT CHR$(29) + " " + CHR$(29); : _
  3027.          GOTO 22160
  3028. 22206 IF ASC(Y$) < 48 OR ASC(Y$) > 57 THEN _
  3029.          GOTO 22160
  3030. 22210 PRINT Y$;
  3031. 22220 HJ$ = HJ$ + Y$
  3032.       IF LEN(HJ$) > 4 THEN _
  3033.          IX = 13
  3034. 22230 RETURN
  3035. 22240 IX = ASC(RIGHT$(Y$,1))
  3036. 22250 Y$ = "
  3037. 22260 IF IX < 59 OR IX > 81 THEN _
  3038.          RETURN
  3039. 22270 IX = IX-58
  3040. 22280 IF IX < 10 THEN _
  3041.          RETURN
  3042. 22290 IF IX = 15 THEN _
  3043.          IX = 11 : _
  3044.          RETURN
  3045. 22300 IF IX = 21 THEN _
  3046.          IX = 10 : _
  3047.          RETURN
  3048. 22310 IF IX = 23 THEN _
  3049.          IX = 12
  3050.       RETURN
  3051. 22320 IX = 0
  3052. 22330 RETURN
  3053. '
  3054. ' *****************************************************************************
  3055. ' * COMMON ROUTINE TO NOTIFY THE USER WHEN READING DATA                       *
  3056. ' *****************************************************************************
  3057. '
  3058. 22340 LOCATE 22,15
  3059.       PRINT SPC(64);
  3060.       LOCATE 22,15
  3061.       PRINT TIME$;" ";
  3062.       COLOR 0,7
  3063.       PRINT " Reading Data, Wait a sec !!! ";
  3064.       COLOR FG,BG,BORDER
  3065.       RETURN
  3066. '
  3067. ' *****************************************************************************
  3068. ' * BEFORE EXITING, ASK USER IF HE WANTS TO WRITE OUT THE CHANGES OR QUIT     *
  3069. ' *****************************************************************************
  3070. '
  3071. 22350 GOSUB 50340
  3072. 22360 XX$ = "Are you satisfied with all changes ? (Y/N) or <Q)uit "
  3073.       GOSUB 50345
  3074.       GOSUB 22380
  3075.       ON AB GOTO 12190,18740,60360,22350
  3076. 22380 LINE INPUT;HJ$
  3077. 22390 IF LEN(HJ$) < 1 OR LEN(HJ$) > 3 THEN _
  3078.          GOTO 22470
  3079. 22400 GOSUB 50654
  3080. 22410 IF HJ$ = "NO" THEN _
  3081.          AB = 1 : _
  3082.          RETURN
  3083. 22420 IF HJ$ = "N" THEN _
  3084.          HJ$ = "NO" : _
  3085.          AB = 1 : _
  3086.          RETURN
  3087. 22430 IF HJ$ = "YES"  THEN _
  3088.          AB = 2 : _
  3089.          RETURN
  3090. 22440 IF HJ$ = "Y" THEN _
  3091.          HJ$ = "YES" : _
  3092.          AB = 2 : _
  3093.          RETURN
  3094. 22450 IF HJ$ = "QUIT" THEN _
  3095.          AB = 3 : _
  3096.          RETURN
  3097. 22460 IF HJ$ = "Q" THEN _
  3098.          AB = 3 : _
  3099.          RETURN
  3100. 22470 AB = 4
  3101.       RETURN
  3102. '
  3103. ' *****************************************************************************
  3104. ' * ASK THE USER WHICH RBBS-PC.DEF FILE CONFIG IS TO WORK WITH                *
  3105. ' *****************************************************************************
  3106. '
  3107. 22480 GOSUB 50340
  3108.       LOCATE 24,5
  3109.       PRINT "To which copy of RBBS-PC will these options apply (1 to 36)?";
  3110. 22490 LINE INPUT;HJ$
  3111. 22500 IF LEN(HJ$) < 1 OR LEN(HJ$) > 2  THEN _
  3112.          GOTO 22480
  3113. 22510 IF VAL(HJ$) < 1 OR VAL(HJ$) > 36 THEN _
  3114.          GOTO 22480
  3115. 22520 MID$(CONFIG.FILENAME$,5,1) = MID$("1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ",VAL(HJ$),1)
  3116. 22530 RETURN
  3117. '
  3118. ' *****************************************************************************
  3119. ' * NOTIFY SYSOP OPTIONS THAT ARE UNAVAILABLE FOR PUBLIC CONFERENCES          *
  3120. ' *****************************************************************************
  3121. '
  3122. 22560 GOSUB 50340
  3123.       LOCATE 24,5
  3124.       PRINT "Option " + HJ$ + " unavailable when maintaining a public conference!";
  3125. 22570 DELAY! = FNTI! + 5
  3126.       GOSUB 60440
  3127.       RETURN
  3128. '
  3129. ' *****************************************************************************
  3130. ' *  DISPLAY THE RBBS-PC UTILITIES AVAILABLE IN CONFIG                        *
  3131. ' *****************************************************************************
  3132. '
  3133. 23000 DISPLAYED.PAGE.NUMBER = 8
  3134. 23010 GOSUB 24800
  3135.       RB = 0
  3136. 23020 LOCATE  3,9
  3137.       PRINT "141. Pack " + MAIN.MESSAGE.FILE$ + " file.
  3138. 23030 LOCATE  4,9
  3139.       PRINT "142. Rebuild " + MAIN.USER.FILE$ + " file.
  3140. 23040 LOCATE  5,9
  3141.       PRINT "143. Print " + MAIN.MESSAGE.FILE$ + " 'header' records.
  3142. 23050 LOCATE  6,9
  3143.       PRINT "144. Renumber messages in " + MAIN.MESSAGE.FILE$ + " file.
  3144. 23055 LOCATE  7,9
  3145.       PRINT "145. Repair messages in " + MAIN.MESSAGE.FILE$ + " file.
  3146. 23056 LOCATE  8,9
  3147.       PRINT "146. Initialize Hayes 2400 firmware for RBBS-PC.
  3148. 23060 A$ = "Enter number of utility function, END to terminate, PgUp/PgDn to scroll."
  3149.       GOSUB 24900
  3150. 23070 GOSUB 22160
  3151. 23080 IF IX THEN _
  3152.          ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,21550,25220,23100
  3153. 23090 GOTO 23070
  3154. 23100 GOSUB 50340
  3155. 23110 IF HJ$ = "141" THEN _
  3156.          GOTO 23160
  3157. 23120 IF HJ$ = "142" THEN _
  3158.          IF F = 2 THEN _
  3159.             GOSUB 22560 : _
  3160.             GOTO 23000 _
  3161.             ELSE D.FLAG = 0 : _
  3162.                  GOSUB 24110 : _
  3163.                  GOTO 23000
  3164. 23130 IF HJ$ = "143" THEN _
  3165.          SK = 0 : _
  3166.          GOTO 23630
  3167. 23140 IF HJ$ = "144" THEN _
  3168.          GOTO 23740
  3169. 23145 IF HJ$ = "145" THEN _
  3170.          RB = 1 : _
  3171.          SK = 0 : _
  3172.          GOTO 23630
  3173. 23146 IF HJ$ = "146" THEN _
  3174.          GOSUB 23731 : _
  3175.          GOTO 23000
  3176. 23150 GOTO 23060
  3177. '
  3178. ' *****************************************************************************
  3179. ' * PACK THE MESSAGES FILE                                                    *
  3180. ' *****************************************************************************
  3181. '
  3182. 23160 B1 = MAXIUM.NUMBER.OF.NODES
  3183.       B3! = HIGHEST.MESSAGE.RECORD
  3184.       PURGE = -1
  3185.       GOSUB 30610
  3186.       GOTO 23000
  3187. 23610 I = LOC(1) + VAL(MID$(MESSAGE.RECORD$,117,4)) - 1              ' CPC14-1D
  3188. 23620 RETURN
  3189. '
  3190. ' *****************************************************************************
  3191. ' * PRINT THE HEADER RECORDS IN THE MESSAGES FILE                             *
  3192. ' *****************************************************************************
  3193. '
  3194. 23630 GOSUB 30040              ' <----Print message headers
  3195. 23640 OPEN "R",1,MAIN.MESSAGE.FILE$
  3196. 23650 FIELD 1,128 AS MESSAGE.RECORD$
  3197. 23670 FOR I = FIRST.MESSAGE.RECORD TO NEXT.MESSAGE.RECORD-1
  3198. 23680   GET 1,I
  3199. 23684   IF VAL(MID$(MESSAGE.RECORD$,117,4)) > 0 AND _                ' CPC14-1D
  3200.            SK < VAL(MID$(MESSAGE.RECORD$,2,4)) THEN _
  3201.            SK = VAL(MID$(MESSAGE.RECORD$,2,4)) : _
  3202.            GOSUB 23610 ELSE _                                        ' CPC14-1C
  3203.         GOTO 23725
  3204. 23686   I$ = "K"
  3205.         IF MID$(MESSAGE.RECORD$,116,1) = CHR$(225) THEN _
  3206.            I$ = "A
  3207. 23715   IF LOC(1) > NEXT.MESSAGE.RECORD-1 THEN _
  3208.            GOTO 23730
  3209. 23717   PRINT LEFT$(MESSAGE.RECORD$,5) + " " + _
  3210.               MID$(MESSAGE.RECORD$,76,25) + " " + _
  3211.               MID$(MESSAGE.RECORD$,101,15) + " " + _
  3212.               I$ + " " + _
  3213.           MID$(MESSAGE.RECORD$,117,4) + " " + _                  ' CPC14-1D
  3214.               STR$(LOC(1)) + " "  + _
  3215.               STR$(I)
  3216.         SK = VAL(MID$(MESSAGE.RECORD$,2,4))
  3217. 23720   IF RB AND VAL(MID$(MESSAGE.RECORD$,2,4)) = CALLS.TODATE! THEN _
  3218.            GOTO 23730
  3219. 23722   IF RB THEN _
  3220.            GOSUB 50580
  3221. 23725 NEXT
  3222. 23730 GET 1,1
  3223.       MID$(MESSAGE.RECORD$,1,8) = SPACE$(8)
  3224.       MID$(MESSAGE.RECORD$,1,8) = STR$(SK)
  3225.       PUT 1,1
  3226.       CLOSE 1
  3227.       DELAY! = FNTI! + 5
  3228.       GOSUB 60440
  3229.       GOTO 23000
  3230. '
  3231. ' *****************************************************************************
  3232. ' * ROUTINE TO INITIALIZE THE HAYES 2400 MODEM'S FIRMWARE                     *
  3233. ' *****************************************************************************
  3234. '
  3235. 23731 LOCATE 25,5
  3236.       PRINT "Setting Hayes 2400 firmware switches for RBBS-PC on " + COM.PORT$;
  3237.       DELAY! = FNTI! + 3
  3238.       GOSUB 60440
  3239. '
  3240. ' *****************************************************************************
  3241. ' *                                                                           *
  3242. ' * WHEN INITIALIZING THE HAYES 2400 VOLITILE MEMORY, SET THE FOLLOWING:      *
  3243. ' *                                                                           *
  3244. ' *           &C1       = Indicate carrier detect if user is on-line          *
  3245. ' *           &D3       = Use these settings when DTR drops                   *
  3246. ' *           B1        = Use Bell 212A when 1200 Baud is detected            *
  3247. ' *           E0        = Do not echo modem commands back to the PC           *
  3248. ' *           V1        = Issue long form of results codes                    *
  3249. ' *           M0        = Disable the speaker                                 *
  3250. ' *                                                                           *
  3251. ' *****************************************************************************
  3252. '
  3253. 23732 A$ = "AT&C1&D3B1E0V1M0"                                        ' CPC14-1D
  3254.       IF VAL(MID$(MODEM.INIT.COMMAND$,24,3)) = 255 THEN _            ' CPC14-1D
  3255.      A$ = A$ + "Q1"  ' Don't send results to the PC              ' CPC14-1D
  3256.       A$ = A$ + _                                                    ' CPC14-1D
  3257.            "S0 = " + MID$(STR$(VAL(MID$(MODEM.INIT.COMMAND$,24,3))),2,3)
  3258.       LOCATE 25,5
  3259.       PRINT SPACE$(74);
  3260.       LOCATE 25,5
  3261.       PRINT "Prevent remote digitial loop back tests? ";
  3262.       GOSUB 22380
  3263.       ON AB GOTO 23734,23733,23732,23732
  3264. 23733 A$ = A$ + "&T5"
  3265. 23734 OPEN COM.PORT$ + ":2400,N,8,1,RS,CD,DS" AS #3
  3266.       PRINT #3,"AT&F" 'Clear and initialize to factory settings      ' CPC14-1D
  3267.       DELAY! = FNTI! + 3
  3268.       GOSUB 60440
  3269.       PRINT #3,A$ + "&W"
  3270.       GOSUB 60440
  3271. 23735 A$="ATS0=0"
  3272.       LOCATE 25,5
  3273.       PRINT SPACE$(74);
  3274.       LOCATE 25,5
  3275.       PRINT "Force auto-answer off? (i.e. let RBBS-PC turn auto-answer on)";
  3276.       GOSUB 22380
  3277.       ON AB GOTO 23739,23736,23735,23735
  3278. 23736 GOSUB 60440
  3279.       PRINT #3,A$+"&W"
  3280.       GOSUB 60440
  3281. 23739 CLOSE #3
  3282.       LOCATE 25,5
  3283.       PRINT SPACE$(74);
  3284.       LOCATE 25,5
  3285.       PRINT "Hayes 2400 firmware switches are now set for RBBS-PC on "+M13$;
  3286.       IA!=FNTI!+3
  3287.       GOSUB 60440
  3288.       RETURN
  3289. '
  3290. ' *****************************************************************************
  3291. ' * ROUTINE TO RENUMBER THE MESSAGE FILE                                      *
  3292. ' *****************************************************************************
  3293. '
  3294. 23740 GOSUB 30040
  3295. 23750 GOSUB 50340
  3296.       LOCATE 24,5
  3297.       PRINT "Renumber starting with OLD message # (<" + STR$(CALLS.TODATE! + 1) + ")";
  3298. 23760 LINE INPUT;HJ$
  3299. 23770 IF HJ$ = "" THEN _
  3300.          GOTO 23000
  3301. 23780 B1 = VAL(HJ$)
  3302. 23790 IF B1 < 1 OR B1 > CALLS.TODATE! THEN _
  3303.          GOTO 23750
  3304. 23800 RE = B1
  3305. 23810 GOSUB 50340
  3306.       LOCATE 24,5
  3307.       PRINT "Renumber starting with NEW message # ";
  3308. 23820 LINE INPUT;HJ$
  3309. 23830 IF HJ$ = "" THEN _
  3310.          GOTO 23000
  3311. 23840 B1 = VAL(HJ$)
  3312. 23850 IF B1 < 1 OR B1 > 9999 THEN _
  3313.          GOTO 23810
  3314. 23860 NE = B1-1
  3315. 23870 OPEN "R",1,MAIN.MESSAGE.FILE$
  3316. 23880 FIELD 1,128 AS MESSAGE.RECORD$
  3317. 23890 GOSUB 50340
  3318. 23910 FOR I  =  FIRST.MESSAGE.RECORD TO NEXT.MESSAGE.RECORD-1
  3319. 23920   GET 1,I
  3320. 23930   IF INSTR(MESSAGE.RECORD$,CHR$(225)) OR _
  3321.            INSTR(MESSAGE.RECORD$,CHR$(226)) THEN _
  3322.            GOSUB 24010 : _
  3323.            GOSUB 23610
  3324. 23940 NEXT
  3325. 23942 GET 1,1
  3326. 23944 MID$(MESSAGE.RECORD$,1,8) = SPACE$(8) ' Update the checkpoint record with the
  3327. 23946 MID$(MESSAGE.RECORD$,1,8) = STR$(NE)  ' 1- 8  =  number of last message on system
  3328. 23947 PUT 1,1
  3329. 23950 CLOSE 1
  3330. 23980 DELAY! = FNTI! + 1
  3331. 23990 GOSUB 60440
  3332. 24000 GOTO 23000
  3333. 24010 LOCATE 24,15
  3334. 24020 PRINT "Msg #" + MID$(MESSAGE.RECORD$,1,5);
  3335. 24030 IF VAL(MID$(MESSAGE.RECORD$,2,4))<RE THEN _
  3336.          PRINT " read"; : _
  3337.          RETURN
  3338. 24040 Y$ = MID$(MESSAGE.RECORD$,1,1)
  3339. 24045 MID$(MESSAGE.RECORD$,1,5) = SPACE$(5)
  3340. 24046 NE = NE + 1
  3341. 24050 MID$(MESSAGE.RECORD$,1,5) = STR$(NE)
  3342. 24060 MID$(MESSAGE.RECORD$,1,1) = Y$
  3343. 24070 PRINT " renumbered as Msg #" + MID$(MESSAGE.RECORD$,1,5)
  3344. 24090 PUT 1,I
  3345. 24100 RETURN
  3346. '
  3347. ' *****************************************************************************
  3348. ' * ROUTINE TO PACK THE USERS FILE                                            *
  3349. ' *****************************************************************************
  3350. '
  3351. 24110 GOSUB 30040
  3352. 24119 OPEN "R",1,MAIN.USER.FILE$,128
  3353. 24120 FIELD 1,  31 AS USER.NAME$, _
  3354.                 15 AS PASSWORD$, _
  3355.                  2 AS SECURITY.LEVEL$, _
  3356.                 14 AS USER.OPTIONS$, _
  3357.                 24 AS CITY.STATE$, _
  3358.                 19 AS MACHINE.TYPE$, _
  3359.                 14 AS LAST.DATE.TIME.ON$, _
  3360.                  3 AS LIST.NEW.DATE$, _
  3361.                  2 AS USER.DOWNLOADS$, _
  3362.                  2 AS USER.UPLOADS$, _
  3363.                  2 AS ELASPED.TIME$
  3364. 24130 GOSUB 50350
  3365.       A$ = F$
  3366.       GOSUB 50095
  3367.       OPEN "R",2,A$,128
  3368. 24140 FIELD 2,  31 AS USER.NAME.N$, _
  3369.                 15 AS PASSWORD.N$, _
  3370.                  2 AS SECURITY.LEVEL.N$, _
  3371.                 14 AS USER.OPTIONS.N$, _
  3372.                 24 AS CITY.STATE.N$, _
  3373.                 19 AS MACHINE.TYPE.N$, _
  3374.                 14 AS LAST.DATE.TIME.ON.N$, _
  3375.                  3 AS LIST.NEW.DATE.N$, _
  3376.                  2 AS USER.DOWN.LOADS.N$, _
  3377.                  2 AS USER.UPLOADS.N$, _
  3378.                  2 AS ELAPSED.TIME.N$
  3379. 24150 CURRENT.MONTH = VAL(LEFT$(DATE$,2))
  3380. 24180 GOSUB 50340
  3381.       A! = 0
  3382.       GOSUB 50840
  3383. 24190 A! = HIGHEST.USER.RECORD
  3384.       CURRENT.USER.COUNT = 1
  3385. 24200 FOR J  =  1 TO A!
  3386. 24210   GET 1
  3387. 24220   IF ASC(USER.NAME$) = 0 OR _
  3388.            MID$(USER.NAME$,1,7) = "NEWUSER" OR _
  3389.            MID$(USER.NAME$,1,7) = "       " OR _ 
  3390.            MID$(USER.NAME$,1,12) = "deleted user" THEN _
  3391.            A$ = "" : _
  3392.            GOTO 24430
  3393. 24225   IF D.FLAG THEN _
  3394.            GOTO 24290
  3395. 24230   SECURITY.LEVEL = CVI(SECURITY.LEVEL$)
  3396. 24240   IF SECURITY.LEVEL => SEC.LVL.EXEMPT.FRM.PURGING THEN _
  3397.            GOTO 24290                           ' copy users exempt from purges
  3398. 24250   IF SECURITY.LEVEL <= MINIMUM.LOGON.SECURITY THEN _
  3399.            GOTO 24290                                 ' copy "locked-out" users
  3400. 24260   MONTH.OF.LAST.LOGON = VAL(LEFT$(LAST.DATE.TIME.ON$,2))
  3401. 24270   MONTHS.SINCE.LAST.LOGON = CURRENT.MONTH-MONTH.OF.LAST.LOGON
  3402. 24280   IF MONTHS.SINCE.LAST.LOGON < 0 THEN _
  3403.            MONTHS.SINCE.LAST.LOGON = MONTHS.SINCE.LAST.LOGON + 12
  3404. 24285   IF MONTHS.SINCE.LAST.LOGON > ACT.MNTHS.B4.DELETING THEN _
  3405.            A$ = "(Last on " + LAST.DATE.TIME.ON$ + ")" : _           ' CPC14-1C
  3406.            GOTO 24430                                     'Purge inactive users
  3407. 24290   PRINT STR$(LOC(1)) + ": " + USER.NAME$ + " copied .... ";
  3408. 24300   GOSUB 50720
  3409.         GOTO 24450
  3410. 24430   PRINT STR$(LOC(1)) + ": " + USER.NAME$ + "        purged... " + A$
  3411. 24450 NEXT
  3412. 24650 CLOSE 1,2
  3413. 24660 MAX.USR.FILE.SIZE.FRM.DEF = HIGHEST.USER.RECORD
  3414. 24670 GOSUB 30450
  3415. 24730 XX$ = "Delete the old " + MAIN.USER.FILE$ + " file? (YES or NO)?"
  3416.       GOSUB 50345
  3417.       GOSUB 22380
  3418.       ON AB GOTO 24750,24770,24730,24730
  3419. 24750 A$ = MAIN.USER.FILE$
  3420.       GOSUB 50096
  3421.       NAME MAIN.USER.FILE$ AS A$
  3422. 24760 GOTO 24780
  3423. 24770 KILL MAIN.USER.FILE$
  3424. 24780 GOSUB 50350
  3425.       A$ = F$
  3426.       GOSUB 50095
  3427.       NAME A$ AS MAIN.USER.FILE$
  3428. 24790 RETURN
  3429. '
  3430. ' *****************************************************************************
  3431. ' * ROUTINE TO DISPLAY THE PAGE HEADER FOR CONFIG'S DISPLAYS                  *
  3432. ' *****************************************************************************
  3433. '
  3434. 24800 CLS
  3435. 24810 I! = FRE(C$)
  3436. 24820 COLOR 0,7,0
  3437. 24830 LOCATE 1,10
  3438. 24840 PRINT "RBBS-PC CPC14.1 Default Configuration " + CONFIG.VERSION$;
  3439.       IF F THEN _
  3440.          GOSUB 24970
  3441. 24850 COLOR FG,BG,BORDER
  3442. 24860 LOCATE 1,68
  3443. 24870 PRINT "Page " + STR$(DISPLAYED.PAGE.NUMBER) + " of " + STR$(MAXIMUM.DISPLAYABLE.PAGES)
  3444. 24880 RETURN
  3445. 24890 A$ = "Enter parameter number to change, END to update, PgUp/PgDn to scroll.
  3446. 24900 LOCATE 24,1
  3447. 24910 PRINT A$;
  3448. 24920 PRINT STRING$((79-LEN(A$)),32);
  3449. 24930 LOCATE 24,LEN(A$) + 1
  3450. 24940 COLOR FG,BG,BORDER
  3451.       HJ$ = "
  3452. 24950 I! = FRE(C$)
  3453. 24960 RETURN
  3454. '
  3455. ' *****************************************************************************
  3456. ' * ROUTINE TO DISPLAY CONFERENCE MAINTENANCE MODE IN CONFIG'S DISPLAYS       *
  3457. ' *****************************************************************************
  3458. '
  3459. 24970 LOCATE 2,1
  3460.       PRINT SPACE$(10)
  3461.       LOCATE 2,10
  3462.       A$ = "Private"
  3463.       IF F = 2 THEN _
  3464.          A$ = "Public"
  3465. 24980 COLOR 31,0,0
  3466.       PRINT "(" + A$ + " Conference Maintenance Mode for " + _
  3467.             MID$(MAIN.MESSAGE.FILE$,1,INSTR(MAIN.MESSAGE.FILE$,"M.DEF")-1) + _
  3468.             ")"
  3469.       COLOR FG,BG,BORDER
  3470.       RETURN
  3471. '
  3472. ' *****************************************************************************
  3473. ' * COMMON SUBROUTINE TO DISPLAY ACTIVITY WHEN PACKING/PURGING FILES          *
  3474. ' *****************************************************************************
  3475. '
  3476. 25020 LOCATE 24,5
  3477.       PRINT A$" record" + STR$(LOC(2)) + " of " + MAIN.USER.FILE$ + " file.";
  3478.       RETURN
  3479. 25030 IF PURGE THEN _
  3480.          RETURN
  3481.       LOCATE 24,5 
  3482.       PRINT A$ + " record" + STR$(LOC(2)) + " of " _
  3483.             + MAIN.MESSAGE.FILE$ + " file.";
  3484.       RETURN
  3485. '
  3486. ' *****************************************************************************
  3487. ' * ALLOW THE SYSOP TO ENTER/EXIT/CHANGE CONFERENCE MAINTENANCE MODE          *
  3488. ' *****************************************************************************
  3489. '
  3490. 25040 GOSUB 50340
  3491. 25041 IF F = 0 THEN _
  3492.          GOTO 25050
  3493. 25042 XX$ = "End conference maintenance? (YES or NO)"
  3494.       GOSUB 50345
  3495.       GOSUB 22380
  3496.       ON AB GOTO 25050,25044,25142,25142
  3497. 25044 MAIN.MESSAGE.FILE$ = MAINMSG$
  3498. 25045 MAIN.USER.FILE$ = MAINUSR$
  3499. 25046 GOTO 12151
  3500. 25050 LOCATE 24,5
  3501.       PRINT "Enter the name of the conference (seven characters or less) ";
  3502. 25060 LINE INPUT;HJ$
  3503. 25070 IF LEN(HJ$) < 1 OR LEN(HJ$) > 7 THEN _
  3504.          GOTO 25040
  3505. 25075 GOSUB 50654
  3506.       CP$ = HJ$
  3507. 25080 GOSUB 50340
  3508. 25090 LOCATE 24,5
  3509.       PRINT "Specify drive (A->" + M$ + ") containing this conference's files. ";
  3510. 25100 LINE INPUT;HJ$
  3511. 25110 IF LEN(HJ$) <> 1 THEN _
  3512.          GOTO 25080
  3513. 25112 GOSUB 50654
  3514. 25114 IF HJ$ < "A" OR HJ$ > M$ THEN _
  3515.          GOTO 25090
  3516. 25120 CP$ = HJ$ + ":" + CP$
  3517. 25140 MAIN.MESSAGE.FILE$ = CP$ + "M.DEF
  3518. 25141 GOSUB 50340
  3519. 25142 XX$ = "Is this a private conference? (YES or NO)"
  3520.       GOSUB 50345
  3521.       GOSUB 22380
  3522.       ON AB GOTO 25144,25160,25141,25141
  3523. 25144 F = 2
  3524.       GOTO 12160
  3525. 25160 F = 1
  3526.       UG = 0
  3527.       MAIN.USER.FILE$ = CP$ + "U.DEF"
  3528.       GOTO 12160
  3529. '
  3530. ' *****************************************************************************
  3531. ' * COMMON ROUTINE TO DISPLAY SUBSYSTEM COMMANDS AND THEIR SECURITY LEVELS    *
  3532. ' *****************************************************************************
  3533. '
  3534. 25180 CLS
  3535.       I! = FRE(C$)
  3536.       COLOR 0,7,0
  3537.       LOCATE 1,23
  3538.       PRINT "RBBS-PC CPC14.1 Default Configuration";
  3539.       COLOR FG,BG,BORDER
  3540. 25190 LOCATE  2,5
  3541.       PRINT "The RBBS-PC " + CO$ + " Commands are as follows:
  3542. 25200 LOCATE   3,8
  3543.       PRINT "Command                       Security Level"
  3544.       RETURN
  3545. 25210 LOCATE 24,5
  3546.       PRINT "Enter first character of command (CR to end)";
  3547.       LINE INPUT;X$
  3548.       IF X$ = "" THEN _
  3549.          RETURN 16910 
  3550.       RETURN
  3551. '
  3552. ' *****************************************************************************
  3553. ' *  DISPLAY DOS SUB-DIRECTORY SUPPORT PARAMETERS WITHIN RBBS-PC              *
  3554. ' *****************************************************************************
  3555. '
  3556. 25220 DISPLAYED.PAGE.NUMBER = 9
  3557. 25230 GOSUB 24800
  3558. 25240 LOCATE  3,10
  3559.       PRINT "161. Will you be using DOS sub-directories? ------ " + WILL.SUBDIRS.B.USED$
  3560. 25250 LOCATE  4,10
  3561.       PRINT "162. Upload to a DOS sub-directory? -------------- " + UPLOAD.TO.SUBDIR$
  3562. 25260 LOCATE  5,10
  3563.       PRINT "163. Are downloads from DOS sub-directories? ----- " + DOWNLOAD.TO.SUBDIR$
  3564. 25262 IF WILL.SUBDIRS.B.USED$ <> "YES" THEN _
  3565.          GOTO 25280
  3566. 25264 LOCATE  6,10
  3567.       PRINT "164. List, change, add, delete sub-directories."
  3568. 25280 GOSUB 24890
  3569. 25290 GOSUB 22160
  3570. 25300 IF IX THEN _
  3571.          ON IX GOTO 12360,14200,14570,15340,25220,16910,21550,23000,25220,22350,23000,12190,25320
  3572. 25310 GOTO 25290
  3573. 25320 GOSUB 50340
  3574. 25330 IF HJ$ = "161" THEN _
  3575.          GOTO 25380
  3576. 25335 IF WILL.SUBDIRS.B.USED$ = "NO" THEN _
  3577.          GOTO 25400
  3578. 25340 IF HJ$ = "162" THEN _
  3579.          GOTO 25420
  3580. 25350 IF HJ$ = "163" THEN _
  3581.          GOTO 25460
  3582. 25360 IF HJ$ = "164" THEN _
  3583.          GOTO 25495
  3584. 25370 GOTO 25280
  3585. '
  3586. ' *****************************************************************************
  3587. ' * ESTABLISH IF THE SYSOP WANTS TO USE DOS SUB-DIRECTORIES                   *
  3588. ' *****************************************************************************
  3589. '
  3590. 25380 XX$ = "Will you be using DOS sub-directories? (YES or NO) "
  3591.       GOSUB 50345
  3592.       GOSUB 22380
  3593.       ON AB GOTO 25400,25410,25380,25380
  3594. 25400 WILL.SUBDIRS.B.USED$ = "NO"
  3595.       UPLOAD.TO.SUBDIR$ = WILL.SUBDIRS.B.USED$
  3596.       DOWNLOAD.TO.SUBDIR$ = WILL.SUBDIRS.B.USED$
  3597.       GOTO 25220
  3598. 25410 WILL.SUBDIRS.B.USED$ = "YES"
  3599.       GOTO 25220
  3600. '
  3601. ' *****************************************************************************
  3602. ' * SET UP FOR UPLOADING TO A DOS SUB-DIRECTORY?                              *
  3603. ' *****************************************************************************
  3604. '
  3605. 25420 XX$ = "Are uploads to a DOS sub-directory? (YES or NO) "
  3606.       GOSUB 50345
  3607.       GOSUB 22380
  3608.       ON AB GOTO 25440,25450,25420,25420
  3609. 25440 UPLOAD.TO.SUBDIR$ = "NO"
  3610.       GOTO 25220
  3611. 25450 UPLOAD.TO.SUBDIR$ = "YES"
  3612.       GOTO 25220
  3613. '
  3614. ' *****************************************************************************
  3615. ' * SHOULD RBBS-PC SET UP TO HAVE DOWNLOADS COME FROM DOS SUB-DIRECTORIES     *
  3616. ' *****************************************************************************
  3617. '
  3618. 25460 XX$ = "Are downloads from DOS sub-directories? (YES or NO) "
  3619.       GOSUB 50345
  3620.       GOSUB 22380
  3621.       ON AB GOTO 25480,25490,25460,25460
  3622. 25480 DOWNLOAD.TO.SUBDIR$ = "NO"
  3623.       GOTO 25220
  3624. 25490 DOWNLOAD.TO.SUBDIR$ = "YES"
  3625.       GOTO 25220
  3626. '
  3627. ' *****************************************************************************
  3628. ' * HANDLE SUB-DIRECTORY INPUTS (LIST, CHANGE, ADD, DELETE) AND PUT IN .DEF   *
  3629. ' *****************************************************************************
  3630. '
  3631. 25495 IF UPLOAD.TO.SUBDIR$ = "NO" THEN _
  3632.          GOTO 25497
  3633.       GOSUB 31060
  3634.       A$ = "upload"
  3635.       PRINT "Change " + A$ +" DOS sub-directory? (YES or NO) ";
  3636. 25496 GOSUB 22380
  3637.       ON AB GOTO 25497,25500,25495,25495
  3638. 25497 IF DOWNLOAD.TO.SUBDIR$ = "NO" THEN _
  3639.          GOTO 25220
  3640.       GOSUB 31060
  3641.       A$ = "download"
  3642.       PRINT "List, change, add, delete " + A$ + _
  3643.             " DOS sub-directories? (YES or NO) ";
  3644. 25498 GOSUB 22380
  3645.       ON AB GOTO 25220,25505,25497,25497
  3646. 25500 IF UPLOAD.SUBDIR$ = "" THEN _
  3647.          GOTO 25502
  3648. 25501 LOCATE 23,5
  3649.       PRINT SPC(74)
  3650.       LOCATE 23,5
  3651.       PRINT "Current " + A$" DOS sub-directory name is " + UPLOAD.SUBDIR$;
  3652. 25502 GOSUB 25850
  3653.       IF LEN(HJ$) < 1 THEN _
  3654.          GOTO 25505
  3655. 25503 IF DRIVE.FOR.UPLOADS$ = MID$(X$,1,1) THEN _
  3656.          SWAP UPLOAD.SUBDIR$,X$ : _
  3657.          IF X$ = "" THEN _
  3658.             GOTO 25501 _
  3659.          ELSE 25505
  3660. 25504 GOTO 25502
  3661. 25505 IF DOWNLOAD.TO.SUBDIR$ = "NO" THEN _
  3662.          GOTO 25220 
  3663.       LOCATE 23,5
  3664.       PRINT SPC(74)
  3665.       LOCATE 23,5 
  3666.       PRINT STR$(DNLD.SUB) + " of 99 download subdirectories designated.";
  3667. 25510 GOSUB 31060
  3668.       PRINT "L>ist, C>hange, A>dd, D>elete " + A$" DOS sub-directories? (CR ends) ";
  3669. 25520 LINE INPUT;HJ$:
  3670. 25530 GOSUB 50654
  3671. 25560 IF LEN(HJ$) <  1 GOTO 25220
  3672. 25565 IF LEN(HJ$) <> 1 GOTO 25505
  3673. 25570 FF = INSTR("LCAD",HJ$)
  3674. 25580 IF FF = 0 THEN _
  3675.          GOTO 25510
  3676. 25585 IF DNLD.SUB = 0 AND FF <> 3 THEN _
  3677.          GOTO 25510
  3678. 25590 ON FF GOSUB 25610,25670,25730,25670
  3679. 25600 GOTO 25505
  3680. 25610 LAST = (DNLD.SUB/16) + 1
  3681.       INCR = 1
  3682.       FOR IX = 1 TO LAST
  3683.       GOSUB 24800
  3684.       LOCATE 4,1
  3685.       PRINT "DOS sub-directories from which downloads are done:";
  3686.       INDEX = 4
  3687.       FOR I = 1 TO 16
  3688.       LOCATE INDEX + I,1
  3689.       PRINT DNLD$(INCR);
  3690.       INCR = INCR + 1
  3691.       IF INCR > DNLD.SUB GOTO 25668
  3692. 25634 NEXT
  3693. 25636 XX$ = "More (YES or NO)"
  3694.       GOSUB 50345
  3695.       GOSUB 22380
  3696.       ON AB GOTO 25668,25644,25636,25636
  3697. 25644 NEXT
  3698. 25668 GOTO 25505
  3699. 25670 GOSUB 25850
  3700.       IF LEN(HJ$) < 1 THEN _
  3701.          GOTO 25505
  3702. 25675 GOSUB 26030
  3703.       A$ = " not found!"
  3704.       IF X$ = "" THEN _
  3705.          GOTO 25682
  3706. 25680 FOR I = 1 TO DNLD.SUB
  3707.           IF X$ = DNLD$(I) THEN _
  3708.              GOTO 25698
  3709.       NEXT
  3710. 25682 GOSUB 31060
  3711.       PRINT X$ + A$;
  3712.       A$ = "download"
  3713.       DELAY! = FNTI! + 5
  3714.       GOSUB 60440
  3715.       GOTO 25505
  3716. 25698 IF FF = 4 THEN _
  3717.          FOR X = I TO DNLD.SUB : _
  3718.              DNLD$(X) = DNLD$(X + 1) : _
  3719.          NEXT : _
  3720.          A$ = " deleted!" : _
  3721.          DNLD.SUB = DNLD.SUB-1 : _
  3722.          GOTO 25682
  3723. 25700 IF FF = 2 THEN _
  3724.          A$ = "download" : _
  3725.          NEXT.MESSAGE.RECORD = I : _
  3726.          GOSUB 25850 : _
  3727.          GOSUB 26030 : _
  3728.          SWAP DNLD$(NEXT.MESSAGE.RECORD),X$ : _
  3729.          A$ = " changed!" : _
  3730.          GOTO 25682
  3731. 25730 X$ = ""
  3732.       GOSUB 25850
  3733.       IF LEN(HJ$) < 1 THEN _
  3734.          GOTO 25505
  3735.       FOR I = 1 TO LEN(DRIVES.FOR.DOWNLOADS$)
  3736.           IF MID$(DRIVES.FOR.DOWNLOADS$,I,1) = LEFT$(X$,1) THEN _
  3737.              GOTO 25735
  3738.       NEXT
  3739.       GOSUB 60380
  3740.       GOSUB 31060
  3741.       PRINT X$ + " is not on a drive eligible for downloading.";
  3742.       DELAY! = FNTI! + 5
  3743.       GOSUB 60440
  3744.       GOTO 25730
  3745. 25735 IF X$ = "" THEN _
  3746.          GOTO 25220
  3747.       DNLD.SUB = DNLD.SUB + 1
  3748.       DNLD$(DNLD.SUB) = X$
  3749.       GOTO 25505
  3750. 25850 GOSUB 31060
  3751.       PRINT "Enter " + A$" DOS sub-directory name (CR to end). ";
  3752. 25860 LINE INPUT;HJ$
  3753.       GOSUB 50654
  3754. 25861 IF LEN(HJ$) < 1 THEN _
  3755.          RETURN
  3756. 25862 IF LEN(HJ$) = 2 AND INSTR(HJ$,":") = 2 THEN _
  3757.          X$ = HJ$ : _
  3758.          RETURN
  3759. 25863 IF INSTR(HJ$,":\") <> 2 THEN _
  3760.          GOTO 25850
  3761. 25870 X$ = HJ$
  3762. 25871 FOR I = 4 TO LEN(X$)
  3763. 25872   Y = INSTR(I,X$,"\")
  3764. 25873   IF Y = 0 THEN _
  3765.            L1 = LEN(X$)-I + 1 : _
  3766.            GOTO 25876
  3767. 25874   IF Y<>0 THEN _
  3768.            L1 = Y-I + 1 : _
  3769.            GOTO 25876
  3770. 25875 NEXT
  3771. 25876 HJ$ = MID$(X$,I,L1)
  3772. 25878 IF LEN(HJ$) > 12 THEN _
  3773.          GOTO 25850
  3774. 25880 L1 = INSTR(HJ$,".")
  3775.       IF L1 = 0 THEN _
  3776.          IF LEN(HJ$) < 9 THEN _
  3777.             GOTO 25920 _
  3778.          ELSE GOTO 25850
  3779. 25890 IF L1 > 9 THEN _
  3780.          GOTO 25850
  3781. 25900 IF L1 < 2 THEN _
  3782.          GOTO 25850
  3783. 25910 IF LEN(HJ$)-L1 > 3 THEN _
  3784.          GOTO 25850
  3785. 25915 I = 0
  3786.       GOSUB 25920
  3787.       IF I = 0 THEN _
  3788.          RETURN
  3789.       GOTO 25850
  3790. 25920 FOR J = 1 TO LEN(HJ$)
  3791. 25930   X = ASC(MID$(HJ$,J,1))
  3792. 25940   IF (X > 63 AND X < 91) THEN _
  3793.            GOTO 26020
  3794. 25950   IF (X > 47 AND X < 58) THEN _
  3795.            GOTO 26020
  3796. 25960   IF (X = 33) THEN _
  3797.            GOTO 26020
  3798. 25970   IF (X > 34 AND X < 42) THEN _
  3799.            GOTO 26020
  3800. 25980   IF (X > 43 AND X < 47) THEN _
  3801.            GOTO 26020
  3802. 25990   IF (X > 96 AND X < 124) THEN _
  3803.            GOTO 26020
  3804. 26000   IF (X = 125) THEN _
  3805.            GOTO 26020
  3806. 26010   I = 1
  3807.         RETURN
  3808. 26020 NEXT
  3809.       RETURN
  3810. 26030 FOR I = 1 TO LEN(DRIVES.FOR.DOWNLOADS$)
  3811.         IF MID$(DRIVES.FOR.DOWNLOADS$,I,1) = MID$(X$,1,1) THEN _
  3812.            RETURN
  3813. 26032 NEXT
  3814.       X$ = ""
  3815.       RETURN
  3816. '
  3817. ' *****************************************************************************
  3818. ' * CHECK TO SEE IF A FILE EXIST (COMMON SUBROUTINE)                          *
  3819. ' *****************************************************************************
  3820. '
  3821. 30000 OKAY = 0                      ' <---- check to see if file exists
  3822. 30010 NAME FILE$ AS FILE$       '   OKAY = 0 means file not found
  3823. 30020 OKAY = -1                     '   OKAY = 1 means file exists
  3824. 30030 RETURN
  3825. '
  3826. ' *****************************************************************************
  3827. ' * COMMON SUBROUTINE TO READ THE MESSAGES FILE'S CHECKPOINT RECORD           *
  3828. ' *****************************************************************************
  3829. '
  3830. 30040 OPEN "R",2,MAIN.MESSAGE.FILE$,128        ' <---- read MESSAGES checkpoint record
  3831. 30050 FIELD 2,128 AS RR$
  3832. 30060 GET 2,1
  3833. 30090 CALLS.TODATE!          = VAL(MID$(RR$,1,8))     '  1-  8  =  number of last message on system
  3834. 30100 FIRST.USER.RECORD      = VAL(MID$(RR$,52,5))    ' 52- 56  =  first rec. of user file
  3835. 30110 CURRENT.USER.COUNT     = VAL(MID$(RR$,57,5))    ' 57- 61  =  next avail. user record
  3836. 30120 HIGHEST.USER.RECORD    = VAL(MID$(RR$,62,5))    ' 62- 66  =  last rec. of user file
  3837. 30130 FIRST.MESSAGE.RECORD   = VAL(MID$(RR$,68,7))    ' 68- 74 = first rec. of msgs file
  3838. 30140 NEXT.MESSAGE.RECORD    = VAL(MID$(RR$,75,7))    ' 75- 81 = next avail. msgs record
  3839. 30150 HIGHEST.MESSAGE.RECORD = VAL(MID$(RR$,82,7))    ' 82- 88 = last rec. of msgs file
  3840. 30152 MAXIMUM.NUMBER.OF.MSGS = VAL(MID$(RR$,89,7))    ' 89- 95 = maximum number of messages
  3841. 30155 MAXIUM.NUMBER.OF.NODES = VAL(MID$(RR$,127,2))   '127-128 = maximum number of "nodes"
  3842. 30160 CLOSE 2
  3843. 30170 RETURN
  3844. '
  3845. ' *****************************************************************************
  3846. ' * COMMON ROUTINE TO GET THE LENGTH OF A FILE                                *
  3847. ' *****************************************************************************
  3848. '
  3849. 30180 OPEN "R",2,FILE$,128      ' <---- get length of file
  3850. 30190 FIELD 2,128 AS RR$
  3851. 30200 UG = LOF(2)/128
  3852. 30210 CLOSE 2
  3853. 30220 RETURN
  3854. '
  3855. ' *****************************************************************************
  3856. ' * COMMON SUBROUTINE TO CREATE A NEW MESSAGES FILE                           *
  3857. ' *****************************************************************************
  3858. '
  3859. 30230 OPEN "R",2,MAIN.MESSAGE.FILE$            ' <---- create new MESSAGES file
  3860. 30240 FIELD 2,128 AS RR$
  3861. 30245 A$ = "Creating preformatted"
  3862. 30270 LSET RR$ = " 1" + SPACE$(124) + STR$(MAXIUM.NUMBER.OF.NODES)
  3863. 30280 PUT 2,1                   ' write out blank checkpoint record
  3864. 30290 FOR J = 2 TO FIRST.MESSAGE.RECORD-1
  3865. 30300   GOSUB 31050
  3866. 30310   PUT 2                   ' write out "door" records of new file
  3867. 30320   GOSUB 25030
  3868. 30330 NEXT
  3869. 30370 FOR J = FIRST.MESSAGE.RECORD TO HIGHEST.MESSAGE.RECORD
  3870. 30380   LSET RR$  =  SPACE$(128)
  3871. 30390   PUT 2                   ' write out messages records of new file
  3872. 30400   GOSUB 25030
  3873. 30410 NEXT
  3874. 30420 HIGHEST.MESSAGE.RECORD = LOC(2)                 ' point to last available message record
  3875. 30425 CLOSE 2
  3876. 30430 GOSUB 30450
  3877. 30440 RETURN
  3878. '
  3879. ' *****************************************************************************
  3880. ' * COMMON SUBROUTINE TO UPDATE MESSAGES FILE'S CHECKPOINT RECORD             *
  3881. ' *****************************************************************************
  3882. '
  3883. 30450 CLOSE 2
  3884. 30455 OPEN "R",2,MAIN.MESSAGE.FILE$            ' <---- update MESSAGES checkpoint record
  3885. 30460 FIELD 2,128 AS RR$
  3886. 30470 GET 2,1
  3887. 30490 MID$(RR$,52,46) = SPACE$(46)   'reset all counters before filling
  3888. 30500 MID$(RR$,52,5) = STR$(FIRST.USER.RECORD)   ' 52- 56 = first rec. of msgs file
  3889. 30510 MID$(RR$,57,5) = STR$(CURRENT.USER.COUNT)   ' 57- 61 = next avail. user record
  3890. 30520 MID$(RR$,62,5) = STR$(HIGHEST.USER.RECORD)   ' 62- 66 = last rec. of user file
  3891. 30540 MID$(RR$,68,7) = STR$(FIRST.MESSAGE.RECORD)   ' 68- 74 = first rec. of msgs file
  3892. 30550 MID$(RR$,75,7) = STR$(NEXT.MESSAGE.RECORD)   ' 75- 81 = next avail. msgs record
  3893. 30560 MID$(RR$,82,7) = STR$(HIGHEST.MESSAGE.RECORD)   ' 82- 88 = last rec. of msgs file
  3894. 30562 MID$(RR$,89,7) = STR$(MAXIMUM.NUMBER.OF.MSGS)   ' 89- 95 = maximum number of messages
  3895. 30565 HJ$ = STR$(MAXIUM.NUMBER.OF.NODES)
  3896.       IF MAXIUM.NUMBER.OF.NODES>9 THEN _
  3897.          HJ$=MID$(STR$(MAXIUM.NUMBER.OF.NODES),2,2)
  3898. 30570 MID$(RR$,127,2) = HJ$       '127-128 = maximum number of "nodes"
  3899. 30580 PUT 2,1
  3900. 30590 CLOSE 2
  3901. 30600 RETURN
  3902. '
  3903. ' *****************************************************************************
  3904. ' * COMMON ROUTINE TO EXPAND/CONTRACT A MESSAGES FILE                         *
  3905. ' *****************************************************************************
  3906. '
  3907. 30610 CLOSE 1
  3908. 30612 CLOSE 2
  3909. 30613 OPEN "R",1,MAIN.MESSAGE.FILE$,128        ' <---- adjust size of the MESSAGES file
  3910. 30614 FIELD 1,128 AS MESSAGE.RECORD$         ' Open old MESSAGES file
  3911. 30615 A$ = MAIN.MESSAGE.FILE$
  3912.       GOSUB 50095
  3913. 30616 OPEN "R",2,A$,128         ' Open new MESSAGES file
  3914. 30620 FIELD 2,128 AS RR$
  3915. 30635 A$="Copying"
  3916. 30640 OE = B1
  3917.       IF MAXIUM.NUMBER.OF.NODES<=B1 THEN _
  3918.          OE = MAXIUM.NUMBER.OF.NODES
  3919. 30650 GOSUB 50340
  3920. 30660 FOR J=1 TO OE + 1
  3921. 30670   GET 1,J
  3922. 30680   LSET RR$ = MESSAGE.RECORD$              ' write out existing checkpoint and
  3923. 30690   PUT 2                    ' existing "door" records
  3924. 30700   GOSUB 25030
  3925. 30710 NEXT
  3926. 30720 IF B1 <= MAXIUM.NUMBER.OF.NODES THEN _
  3927.          GOTO 30780
  3928. 30730 FOR J  =  OE + 1 TO B1
  3929. 30740   GOSUB 31050
  3930. 30750   PUT 2                    ' write out expansion "door" records
  3931. 30760   GOSUB 25030
  3932. 30770 NEXT
  3933. 30780 MAXIUM.NUMBER.OF.NODES=B1                      ' set value for maximum number of nodes
  3934. 30820 FOR J = FIRST.MESSAGE.RECORD TO NEXT.MESSAGE.RECORD-1
  3935. 30830   GET 1,J
  3936. 30831   IF PURGE <> -1 THEN _
  3937.            GOTO 30840
  3938. 30832   IF MID$(MESSAGE.RECORD$,116,1)=CHR$(225) THEN _
  3939.            PRINT "Msg #" + LEFT$(MESSAGE.RECORD$,5) + " copied..." : _
  3940.            GOTO 30840
  3941. 30833   IF MID$(MESSAGE.RECORD$,116,1) = CHR$(226) THEN _
  3942.            PRINT "Msg #" + LEFT$(MESSAGE.RECORD$,5) + "          purged..." : _
  3943.        J=LOC(1) + VAL(MID$(MESSAGE.RECORD$,117,4)) : _           ' CPC14-1D
  3944.            GOTO 30830
  3945. 30840   LSET RR$ = MESSAGE.RECORD$
  3946. 30850   PUT 2                    ' write out existing message records
  3947. 30860   GOSUB 25030
  3948. 30870 NEXT
  3949. 30875 B1=LOC(2) + 1                ' get new file's next message record
  3950. 30880 CLOSE 1
  3951. 30900 IF B3! < LOC(2) + 1 THEN _
  3952.          GOTO 30960
  3953. 30905 IF PURGE THEN _
  3954.          NEXT.MESSAGE.RECORD = LOC(2) + 1 : _
  3955.          PURGE = 0 : _
  3956.          A$ = "Preformatting"
  3957. 30910 FOR J! = NEXT.MESSAGE.RECORD TO B3!
  3958. 30920   LSET RR$  =  SPACE$(128)
  3959. 30930   PUT 2                    ' write out expansion message records
  3960. 30940   GOSUB 25030
  3961. 30950 NEXT
  3962. 30960 FIRST.MESSAGE.RECORD = 1 + MAXIUM.NUMBER.OF.NODES + 1
  3963.       NEXT.MESSAGE.RECORD = B1
  3964.       HIGHEST.MESSAGE.RECORD = LOC(2)
  3965.       CLOSE 2
  3966. 30980 XX$ = "Delete the old " + MAIN.MESSAGE.FILE$ + " file? (YES or NO)?"
  3967.       GOSUB 50345
  3968.       GOSUB 22380
  3969.       ON AB GOTO 31000,31020,30980,30980
  3970. 31000 A$ = MAIN.MESSAGE.FILE$
  3971.       GOSUB 50096
  3972.       NAME MAIN.MESSAGE.FILE$ AS A$
  3973. 31010 GOTO 31030
  3974. 31020 KILL MAIN.MESSAGE.FILE$
  3975. 31030 A$ = MAIN.MESSAGE.FILE$
  3976.       GOSUB 50095
  3977.       NAME A$ AS MAIN.MESSAGE.FILE$
  3978. 31035 GOSUB 30450
  3979. 31040 RETURN
  3980. '
  3981. ' *****************************************************************************
  3982. ' * COMMON SUBROUTINE TO CREATE A BLANK "NODE" RECORD IN THE MESSAGE FILE     *
  3983. ' *****************************************************************************
  3984. '
  3985. 31050 LSET RR$ = SPACE$(31) + "-1 0 0 0 0 0 0 0    0 0 0I"
  3986.       RETURN
  3987. '
  3988. ' *****************************************************************************
  3989. ' * COMMON SUBROUTINE TO POSITION CURSOR ON LINE 24, COLUMN 5                 *
  3990. ' *****************************************************************************
  3991. '
  3992. 31060 GOSUB 50340
  3993.       LOCATE 24,5
  3994.       RETURN
  3995. '
  3996. ' *****************************************************************************
  3997. ' * ROUTINE TO CREATE A NEW USERS FILE                                        *
  3998. ' *****************************************************************************
  3999. '
  4000. 50000 OPEN "R",2,MAIN.USER.FILE$            ' <---- create a new USERS file
  4001. 50010 FIELD 2,128 AS U$
  4002. 50015 GOSUB 50340
  4003. 50016 A$ = "Creating preformatted"
  4004. 50020 FOR J = FIRST.USER.RECORD TO HIGHEST.USER.RECORD
  4005. 50030   LSET U$  =  SPACE$(128)
  4006. 50040   PUT 2
  4007. 50050   GOSUB 25020
  4008. 50060 NEXT
  4009. 50080 CLOSE 2
  4010. 50090 RETURN
  4011. '
  4012. ' *****************************************************************************
  4013. ' * COMMON SUBROUTINE TO MAKE SURE A WORK FILE HAS ".BAK" AS AN EXTENSION     *
  4014. ' *****************************************************************************
  4015. '
  4016. 50095 IF INSTR(A$,".") THEN _
  4017.          A$ = MID$(A$,1,INSTR(A$,".")-1) + ".BAK" : _
  4018.          RETURN _
  4019.       ELSE A$ = A$ + ".BAK" : _
  4020.       RETURN
  4021. '
  4022. ' *****************************************************************************
  4023. ' * COMMON SUBROUTINE TO MAKE SURE SAVED FILES HAVES ".OLD" AS AN EXTENSION   *
  4024. ' *****************************************************************************
  4025. '
  4026. 50096 IF INSTR(A$,".") THEN _
  4027.          A$ = MID$(A$,1,INSTR(A$,".")-1) + ".OLD" : _
  4028.          RETURN _
  4029.       ELSE A$ = A$ + ".OLD" : _
  4030.       RETURN
  4031. '
  4032. ' *****************************************************************************
  4033. ' * COMMON SUBROUTINE TO CREATE A NEW MESSAGES FILE                           *
  4034. ' *****************************************************************************
  4035. '
  4036. 50100 OPEN "R",2,MAIN.MESSAGE.FILE$
  4037. 50110 FIELD 2,128 AS RR$
  4038. 50114 IF F = 1 THEN _
  4039.          CALLS.TODATE! = 1
  4040. 50115 GOSUB 50340
  4041. 50120 LSET RR$ = " 1      " + SPACE$(118) + STR$(MAXIUM.NUMBER.OF.NODES)
  4042. 50130 PUT 2,1                       ' write out first record of new file
  4043. 50140 FOR J! = 2 TO MAXIUM.NUMBER.OF.NODES + 1
  4044. 50150   GOSUB 31050
  4045. 50160   PUT 2                       ' write out "door" records of new file
  4046. 50170   GOSUB 25030
  4047. 50180 NEXT
  4048. 50190 FIRST.MESSAGE.RECORD = LOC(2) + 1      ' point to first message record
  4049. 50200 NEXT.MESSAGE.RECORD = FIRST.MESSAGE.RECORD   ' point to next available message record
  4050. 50210 IF MAXIUM.NUMBER.OF.NODES + 1 = MAX.MSG.FILE.SIZE.FRM.DEF! THEN _
  4051.          GOTO 50270
  4052. 50220 FOR J! = MAXIUM.NUMBER.OF.NODES + 2 TO MAX.MSG.FILE.SIZE.FRM.DEF!
  4053. 50230   LSET RR$  =  SPACE$(128)
  4054. 50240   PUT 2                          ' write out messages records of new file
  4055. 50250   GOSUB 25030
  4056. 50260 NEXT
  4057. 50270 HIGHEST.MESSAGE.RECORD = LOC(2)                  ' point to last available message record
  4058. 50280 GOSUB 30040
  4059. 50290 RETURN
  4060. '
  4061. ' *****************************************************************************
  4062. ' * COMMON SUBROUTINE TO KEEP STRING SPACE CLEAN AND CLEAR LINE 24            *
  4063. ' *****************************************************************************
  4064. '
  4065. 50340 I! = FRE(C$)
  4066.       LOCATE 24,1
  4067.       PRINT STRING$(79,32);
  4068.       RETURN
  4069. '
  4070. ' *****************************************************************************
  4071. ' * COMMON SUBROUTINE TO DISPLAY A MESSAGE ON LINE 24                         *
  4072. ' *****************************************************************************
  4073. '
  4074. 50345 GOSUB 50340
  4075.       LOCATE 24,5
  4076.       PRINT XX$;
  4077.       RETURN
  4078. '
  4079. ' *****************************************************************************
  4080. ' * COMMON SUBROUTINE TO RETURN FROM CONFERENCE MODE TO MAIN MESSAGE FILE     *
  4081. ' *****************************************************************************
  4082. '
  4083. 50350 F$ = MAIN.USER.FILE$
  4084. 50360 IF INSTR(MAIN.USER.FILE$,".") THEN _
  4085.          F$ = MID$(MAIN.USER.FILE$,1,INSTR(MAIN.USER.FILE$,".")-1)
  4086. 50370 RETURN
  4087. '
  4088. ' *****************************************************************************
  4089. ' * COMMON SUBROUTINE TO GET LENGTH OF THE USERS FILE                         *
  4090. ' *****************************************************************************
  4091. '
  4092. 50480 MAX.USR.FILE.SIZE.FRM.DEF = 8
  4093. 50490 NAME MAIN.USER.FILE$ AS MAIN.USER.FILE$
  4094. 50500 OPEN "R",1,MAIN.USER.FILE$
  4095. 50510 IF MAX.USR.FILE.SIZE.FRM.DEF < LOF(1)/128 THEN _
  4096.          MAX.USR.FILE.SIZE.FRM.DEF = LOF(1)/128
  4097. 50520 UG = LOF(1)/128
  4098.       CLOSE 1
  4099.       RETURN
  4100. '
  4101. ' *****************************************************************************
  4102. ' * COMMON SUBROUTINE TO GET LENGTH OF THE MESSAGES FILE                      *
  4103. ' *****************************************************************************
  4104. '
  4105. 50530 MAX.MSG.FILE.SIZE.FRM.DEF! = (5*MAX.ALLOWED.MSGS.FRM.DEF) + 1 + MAXIUM.NUMBER.OF.NODES
  4106. 50540 NAME MAIN.MESSAGE.FILE$ AS MAIN.MESSAGE.FILE$
  4107. 50550 OPEN "R",1,MAIN.MESSAGE.FILE$
  4108. 50560 IF MAX.MSG.FILE.SIZE.FRM.DEF!<LOF(1)/128 THEN _
  4109.          MAX.MSG.FILE.SIZE.FRM.DEF! = LOF(1)/128
  4110. 50570 CLOSE 1
  4111.       RETURN
  4112. '
  4113. ' *****************************************************************************
  4114. ' * COMMON SUBROUTINE TO REPAIR THE MESSAGE FILE AND GUARANTEE IT'S CHAINS    *
  4115. ' *****************************************************************************
  4116. '
  4117. 50580 OLD = LOC(1)
  4118.       GET 1,I + 1
  4119. 50590 IF (MID$(MESSAGE.RECORD$,116,1) = CHR$(225) _
  4120.          OR  MID$(MESSAGE.RECORD$,116,1) = CHR$(226)) _
  4121.          AND (MID$(MESSAGE.RECORD$,61,1) = ":" _
  4122.          AND  MID$(MESSAGE.RECORD$,64,1) = ":" _
  4123.          AND  MID$(MESSAGE.RECORD$,70,1) = "-" _
  4124.          AND MID$(MESSAGE.RECORD$,73,1) = "-") THEN _
  4125.          RETURN
  4126. 50600 PRINT "Message chain broken at record number " + STR$(OLD)
  4127. 50610 PRINT "Message chain repair in progress!
  4128. 50620 FOR IQ = OLD + 1 TO NEXT.MESSAGE.RECORD-1
  4129. 50630   GET 1,IQ
  4130. 50640   IF (MID$(MESSAGE.RECORD$,116,1) = CHR$(225) _
  4131.          OR MID$(MESSAGE.RECORD$,116,1) = CHR$(226)) _
  4132.          AND (MID$(MESSAGE.RECORD$,61,1)  = ":" _
  4133.          AND  MID$(MESSAGE.RECORD$,64,1)  = ":" _
  4134.          AND  MID$(MESSAGE.RECORD$,70,1) = "-" _
  4135.          AND  MID$(MESSAGE.RECORD$,73,1) = "-") THEN _
  4136.          GOTO 50660
  4137. 50645 NEXT
  4138. 50650 GOTO 23730
  4139. '
  4140. ' *****************************************************************************
  4141. ' * COMMON ROUTINE TO CONVERT FROM LOWER TO UPPER CASE                        *
  4142. ' *****************************************************************************
  4143. '
  4144. 50654 ' Convert Lower Case to Upper Case -------
  4145. 50655 FOR Z = 1 TO LEN(HJ$)
  4146.         MID$(HJ$,Z,1) = CHR$(ASC(MID$(HJ$,Z,1)) + 32*(ASC(MID$(HJ$,Z,1))>96))
  4147.         NEXT
  4148.       RETURN
  4149. '
  4150. ' *****************************************************************************
  4151. ' * COMMON SUBROUTINE TO SKIP TO THE NEXT GOOD MESSAGE HEADER IF CHAIN BORKEN *
  4152. ' *****************************************************************************
  4153. '
  4154. 50660 GET 1,OLD
  4155. 50670 MID$(MESSAGE.RECORD$,117,4) = STR$(IQ-OLD)                     ' CPC14-1D
  4156. 50680 PUT 1,OLD
  4157. 50690 PRINT "Message chain repaired.
  4158. 50700 I = IQ
  4159. 50710 RETURN
  4160. '
  4161. ' *****************************************************************************
  4162. ' * COMMON SUBROUTINE TO HASH A USER'S NAME TO FIND THE CORRECT USER RECORD # *
  4163. ' *****************************************************************************
  4164. '
  4165. 50720 JX = 30
  4166.       WHILE MID$(USER.NAME$,JX,1) = " "
  4167.         JX = JX-1
  4168.       WEND
  4169.       X$ = MID$(USER.NAME$,1,JX)
  4170. 50721 UIX# = FNHSH(X$)
  4171.       Q = FNHSH2(X$)
  4172.       NSR = 1
  4173.       RO = CSRLIN
  4174.       CO = POS(0)
  4175. 50722 GET 2,UIX#
  4176. 50724 IF MID$(USER.NAME.N$,1,7) = "       " THEN _
  4177.          GOTO 50730
  4178. 50726 UIX# = UIX# + Q
  4179.       IF UIX# > MAX.USR.FILE.SIZE.FRM.DEF THEN _
  4180.          UIX# = UIX# - MAX.USR.FILE.SIZE.FRM.DEF
  4181. 50728 NSR = NSR + 1
  4182.       LOCATE RO,CO
  4183.       PRINT "searching";UIX#;
  4184.       GOTO 50722
  4185. 50730 LSET USER.NAME.N$         = USER.NAME$
  4186.       LSET PASSWORD.N$          = PASSWORD$
  4187.       LSET SECURITY.LEVEL.N$    = SECURITY.LEVEL$
  4188.       LSET USER.OPTIONS.N$      = USER.OPTIONS$
  4189.       LSET CITY.STATE.N$        = CITY.STATE$
  4190.       LSET MACHINE.TYPE.N$      = MACHINE.TYPE$
  4191.       LSET LAST.DATE.TIME.ON.N$ = LAST.DATE.TIME.ON$
  4192.       LSET LIST.NEW.DATE.N$     = LIST.NEW.DATE$
  4193.       LSET USER.DOWN.LOADS.N$   = USER.DOWNLOADS$
  4194.       LSET USER.UPLOADS.N$      = USER.UPLOADS$
  4195.       LSET ELAPSED.TIME.N$      = ELASPED.TIME$
  4196. 50820  PUT 2,UIX#
  4197.       CURRENT.USER.COUNT = CURRENT.USER.COUNT + 1
  4198.       LOCATE RO,CO
  4199.       PRINT "to pos#";UIX#;" /";NSR;" srch(s)"
  4200. 50830 RETURN
  4201. '
  4202. ' *****************************************************************************
  4203. ' * COMMON SUBROUTINE TO WRITE OUT BLANK USER RECORDS TO THE USERS FILE       *
  4204. ' *****************************************************************************
  4205. '
  4206. 50840 FOR J = A! + 1 TO MAX.USR.FILE.SIZE.FRM.DEF
  4207. 50850   LSET USER.NAME.N$         =  SPACE$(31)
  4208.         LSET PASSWORD.N$          = SPACE$(15)
  4209.         LSET SECURITY.LEVEL.N$    = MKI$(-32000)
  4210.         LSET USER.OPTIONS.N$      = SPACE$(14)
  4211.         LSET CITY.STATE.N$        = SPACE$(24)
  4212.         LSET MACHINE.TYPE.N$      = SPACE$(19)
  4213. 50910   LSET LAST.DATE.TIME.ON.N$ = SPACE$(14)
  4214.         LSET LIST.NEW.DATE.N$     = SPACE$(3)
  4215.         LSET USER.DOWN.LOADS.N$   = SPACE$(2)
  4216.         LSET USER.UPLOADS.N$      = SPACE$(2)
  4217.         LSET ELAPSED.TIME.N$      = SPACE$(2)
  4218. 50970   PUT 2
  4219.         GOSUB 25020
  4220. 50980 NEXT
  4221.       RETURN
  4222. '
  4223. ' *****************************************************************************
  4224. ' *  CONFIG.BAS'S ERROR ROUTINES                                              *
  4225. ' *****************************************************************************
  4226. '
  4227. 60000 REM
  4228. 60010 REM * HANDLE ERROR CONDITIONS *
  4229. 60020 ' PRINT ERR,ERL :STOP
  4230. 60030 IF ERR = 53 AND ERL = 30010 THEN _
  4231.          RESUME 30030
  4232. 60031 IF ERR = 58 AND ERL = 30010 THEN _
  4233.          RESUME 30020
  4234. 60040 IF ERR = 62 AND _
  4235.         (ERL = 11600 OR _
  4236.          ERL = 11620 OR _
  4237.          ERL = 11640 OR _
  4238.          ERL = 11705 OR _
  4239.          ERL = 11706) THEN _
  4240.          PRINT CONFIG.FILENAME$ + _
  4241.                " from a version earlier than CPC14.1 on default drive." : _
  4242.          PRINT "Please delete and rerun CONFIG." : _
  4243.          RESUME 60340
  4244. 60140 IF ERL = 31000 AND ERR = 58 THEN _
  4245.          KILL A$ : _
  4246.          RESUME 31000
  4247. 60150 IF ERL = 31030 AND ERR = 58 THEN _
  4248.          KILL A$ : _
  4249.          RESUME 31030
  4250. 60170 IF ERL = 22120 AND ERR = 6 THEN _
  4251.          RESUME 22100
  4252. 60270 IF ERL = 24750 AND ERR = 58 THEN _
  4253.          KILL A$ : _
  4254.          RESUME 24750
  4255. 60278 IF ERL = 50490 AND ERR = 58 THEN _
  4256.          RESUME 50500
  4257. 60280 IF ERL = 50540 AND ERR = 58 THEN _
  4258.          RESUME 50550
  4259. 60282 IF ERL = 50490 OR ERL = 50540 THEN _ 
  4260.          RESUME 15230
  4261. 60285 IF ERR = 61 THEN _
  4262.          PRINT "ERROR - IBM DOS DISKETTE FULL " : _
  4263.          RESUME 60340
  4264. 60290 IF ERR = 67 THEN _
  4265.          PRINT "ERROR - IBM DOS DIRECTORY FULL" : _
  4266.          RESUME 60340
  4267. 60300 IF ERR = 70 THEN _ 
  4268.          PRINT "DISKETTE IN DRIVE IS WRITE PROTECTED" : _
  4269.          RESUME 60340
  4270. 60310 IF ERR = 71 THEN _
  4271.          PRINT "DRIVE DOOR OPEN OR MISSING DISKETTE"  : _
  4272.          RESUME 60340
  4273. 60320 IF ERR = 72 THEN _
  4274.          PRINT "ERROR - UNFORMATTED IBM DOS DISKETTE IN DRIVE" : _
  4275.          RESUME 60340
  4276. 60330 PRINT "+++ Error";ERR;" in line ";ERL "occurred at " TIME$ " on " DATE$
  4277. 60340 IF F = 1 THEN _
  4278.          GOSUB 10540 : _
  4279.          DELAY! = FNTI! + 5
  4280. 60350 GOSUB 60440
  4281. 60360 SYSTEM
  4282. 60370 PRINT "Unable to create preformatted " + MAIN.USER.FILE$ + " file."
  4283.       GOTO 60340
  4284. '
  4285. ' *****************************************************************************
  4286. ' * COMMON SUBROUTINE TO BEEP AT THE SYSOP                                    *
  4287. ' *****************************************************************************
  4288. '
  4289. 60380 FOR I = 1 TO 3
  4290.         SOUND 1000*I,1
  4291.       NEXT
  4292.       RETURN
  4293. '
  4294. ' *****************************************************************************
  4295. ' * COMMON ROUTINE TO WAIT A SPECIFIED NUMBER OF SECONDS                      *
  4296. ' *****************************************************************************
  4297. '
  4298. 60440 ' wait routine
  4299. 60450 IF FNTI! < DELAY! THEN _
  4300.          GOTO 60450
  4301. 60460 RETURN
  4302.